【发布时间】:2013-12-13 17:23:44
【问题描述】:
我的程序应该做 3 个操作:
- 插入
- 删除
- 在循环链表上显示。
我的问题在于删除功能。这是代码:
void c_list::del()
{
int num;
if(isempty())
cout<<"List is Empty!"<<endl;
else
{
node *temp1=first;
node *temp2=NULL;
cout<<"Enter the number that u want to DELETE:"<<endl;
cin>>num;
while(temp1->next!=first && temp1->info != num)
{
temp2=temp1;
temp1=temp1->next;
}
if(num != temp1->info )
cout<<"your number was not found in the list"<<endl;
else
{
if(temp2!=NULL)
{
temp2->next=temp1->next;
cout<<temp1->info<<" was deleted"<<endl;
}
else
{
first=temp1->next;
cout<<temp1->info<<"was deleted"<<endl;
}
}
}
system("pause");
}
删除功能以这种方式工作:用户输入一个数字,程序搜索该数字并找到该数字后,将其从列表中删除。
现在的问题是,当用户输入列表中不存在的数字时,会出现“应用程序崩溃窗口”(我的意思是这个窗口:程序没有响应),而我提供了一条错误消息对于这种情况(“您的号码不在列表中”)!!
你能告诉我问题是什么吗?
【问题讨论】:
-
你的意思是“程序没有响应”窗口出现了吗?
-
是的,出现这个窗口
-
为什么while循环和if语句的条件相同(
temp1->info != num)?如果那是false,那么你甚至不会执行if的语句。 -
你确定你的数据结构是正确的并且你最终会再次到达
first吗? -
@Mahesh 如果我应该写什么??
标签: c++ circular-list