老師布置的作業(yè)
是根據(jù)提示用戶輸入姓名和聯(lián)系電話來(lái)找到鏈表中位置進(jìn)行刪除嗎
void?deleteperson(List?*pList) { Node?node; Person?person; cout<<"你要?jiǎng)h除的聯(lián)系人姓名和聯(lián)系電話:"; cin>>person.name>>person.phone; node.data?=?person; int?i?=?pList->LocateElem(&node); pList->ListDelete(i,&node);? }
2016-08-29
先找到聯(lián)系人位置在刪除,自己寫的,僅供參考
void deletePerson(List<Node> *pl,Node *temp)
{
? ?Node node;
? ?cout << "請(qǐng)輸入姓名:" << endl;
? ?cin >> node.data.name;
? ?cout << "請(qǐng)輸入電話:" << endl;
? ?cin >> node.data.phone;
? ?int locate = pl->LocateElem(&node);//先查找聯(lián)系人的位置
? ?if(locate == -1)
? ?{
? ? ? ?cout << "沒(méi)找到此聯(lián)系人" << endl;
? ? ? ?return;
? ?}
? ?pl->ListDelete(locate,temp);//刪除聯(lián)系人
? ?cout << "成功刪除聯(lián)系人" << endl;
}
2019-07-28
void deleteperson(List*pList)
{
Node node;
cout << "刪除全部請(qǐng)按 <1> -- 刪除指定姓名請(qǐng)按 <2>--刪除指定號(hào)碼請(qǐng)按<3>" <<endl;
int num= 0;
int flag = 0;
cin >> num;
switch (num)
{
case 1:
pList->ClearList(); break;
case 2:
cout << "請(qǐng)輸入姓名:";
cin >> node.data.name;
case 3:
cout << "請(qǐng)輸入電話:";
cin >> node.data.phone;
flag = pList->LocateElem(&node);
if (flag == -1)
{
cout << "通訊錄無(wú)此聯(lián)系人,請(qǐng)重新輸入!" << endl;
break;
}
else
{
pList->ListDelete(flag, &node);
break;
}
default:
break;
}
}
另外在LocateElem中改變一下
int List::LocateElem(Node *pNode)
{
?Node*currentNode=m_pList;
?int count=0;
?while(currentNode->next!=NULL)
{
?currentNode=currentNode->next;
?if(currentNode->data.name==pNode->data.name||currentNode->data.phone==pNode->data.phone)
?{return count;}
?count++;
}
?return -1;
}
這樣就可以實(shí)現(xiàn)不論你輸入電話或者號(hào)碼任意一個(gè)條件都可以刪除對(duì)應(yīng)的全部信息
2018-01-05
void deletePerson(List *plist)//刪除聯(lián)系人 方法2
{
cout<<"是否刪除所有聯(lián)系人輸入1"<<endl;
int ?order;
cin>>order;
if (order==1)
{
plist->ClearList();
cout<<"所有聯(lián)系人已經(jīng)刪除"<<endl;
}?
else
{
int sequenceNumber;
cout<<"請(qǐng)輸入序號(hào) : ";
cin>>sequenceNumber;?
sequenceNumber<1||sequenceNumber>plist->ListLength()?cout<<"此聯(lián)系人不存在"<<endl:cout<<"此聯(lián)系人已經(jīng)刪除"<<endl;
Node node;
plist->ListDelete(sequenceNumber-1,&node);
}
}
void List::ListTraverse()
{
Node *currentNode=m_pList;
for(int k=0;k<m_iLength;k++)
{
currentNode=currentNode->next;
cout<<"sequence Number ?"<<k+1<<" : ";
currentNode->printNode();
}
}
2017-07-07
修改一下LocateElem函數(shù):
int List::LocateElem(Node *pNode)
? {
? ??Node *currentNode=m_iPlist;
? ??int count=0;
??while(currentNode->next!=NULL)
??{
???currentNode=currentNode->next;
???if(currentNode->data.m_sName==pNode->data.m_sName)
???{
????return count;
?? }
?? count++;
? }
? return -1;
???
? }
通過(guò)名字刪除,個(gè)人想法,歡迎各位學(xué)友交流指正。
2017-02-21
先遍歷,我在遍歷的時(shí)候,修改了一下,能夠看到每個(gè)聯(lián)系人的序號(hào)
只需要輸入對(duì)應(yīng)的序號(hào)就可以刪除聯(lián)系人,在刪除操作上簡(jiǎn)化了
同時(shí)也衍生出搜索聯(lián)系人的問(wèn)題,對(duì)cin>>的運(yùn)算符進(jìn)行了重載,靠聯(lián)系人的姓名來(lái)搜索,不過(guò)暫時(shí)還沒(méi)解決只輸入姓名,年齡,城市,手機(jī)號(hào)其中的一項(xiàng)來(lái)進(jìn)行搜索的問(wèn)題,望大神指點(diǎn)迷津
2016-12-06
void deletePerson(List*pList)
{
? ?char str;
? ?Node node;
? ?Person person;
? ?cout<<"請(qǐng)輸入姓名: ";
? ?cin>>person.name;
? ?cout<<"請(qǐng)輸入電話: ";
? ?cin>>person.phone;
? ?node.data=person;
? ?node.data=person;
? ?int count = pList->LocateElem(&node);
? ?if(count==-1)
? ?{
? ? ? ?cout<<"沒(méi)有該聯(lián)系人"<<endl;
? ? ? ?return;
? ?}
? ?else
? ?{
? ? ? ?cout<<"確定要?jiǎng)h除此人?"<<endl;
? ? ? ?cin>>str;
? ? ? ?switch (str) {
? ? ? ?case 'y':
? ? ? ? ? ?pList->ListDelete(count,&node);
? ? ? ? ? ?cout<<"聯(lián)系人已刪除";
? ? ? ? ? ?cout<<"------------"<<endl;
? ? ? ? ? ?pList->ListTraverse();
? ? ? ? ? ?break;
? ? ? ?case 'n':
? ? ? ? ? ?return pList->ListTraverse();
? ? ? ? ? ?break;
? ? ? ?default:
? ? ? ? ? ?break;
? ? ? ?}
? ?}
}
2016-12-06
void deletePerson(List*pList)
{
? ?char str;
? ?Node node;
? ?Person person;
? ?cout<<"請(qǐng)輸入姓名: ";
? ?cin>>person.name;
? ?cout<<"請(qǐng)輸入電話: ";
? ?cin>>person.phone;
? ?node.data=person;
? ?node.data=person;
? ?int count = pList->LocateElem(&node);
? ?if(count==-1)
? ?{
? ? ? ?cout<<"沒(méi)有該聯(lián)系人"<<endl;
? ? ? ?return;
? ?}
? ?else
? ?{
? ? ? ?cout<<"確定要?jiǎng)h除此人?"<<endl;
? ? ? ?cin>>str;
? ? ? ?switch (str) {
? ? ? ?case 'y':
? ? ? ? ? ?pList->ListDelete(locate,&node);
? ? ? ? ? ?cout<<"聯(lián)系人已刪除";
? ? ? ? ? ?cout<<"------------"<<endl;
? ? ? ? ? ?pList->ListTraverse();
? ? ? ? ? ?break;
? ? ? ?default:
? ? ? ? ? ?break;
? ? ? ?}
? ?}
}
2016-09-28
void removePeron(List *plist)
{
Node node;
cout << "刪除全部請(qǐng)按 <1> -- 刪除指定姓名請(qǐng)按 <2>" <<endl;
int num= 0;
int flag = 0;
cin >> num;
switch (num)
{
case 1:
plist->ClearList(); break;
case 2:
cout << "請(qǐng)輸入姓名:";
cin >> node.data.name;
cout << "請(qǐng)輸入電話:";
cin >> node.data.phone;
flag = plist->LocateElem(&node);
if (flag == -1)
{
cout << "通訊錄無(wú)此聯(lián)系人,請(qǐng)重新輸入!" << endl;
break;
}
else
{
plist->ListDelete(flag, &node);
break;
}
default:
break;
}
}
僅供參考 刪除必須要同時(shí)輸入 姓名和 電話 這樣顯得有點(diǎn)多此一舉啊。不知道哪位大神可以改進(jìn)。