新微赢技术网

标题: [原创]C++程序设计实践报告 [打印本页]

作者: aiq無奈tx    时间: 2009-11-3 03:32
标题: [原创]C++程序设计实践报告
C++作业,分享




附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
作者: 駃旒_鎏蒗瀦    时间: 2009-11-3 03:32
支持一下

感觉mylist的删除考虑的不全面,改了一下,不过没运行。

  1. void Delete(T &inform) //删除
  2. {
  3. bool found=false;

  4. if( (head == tail) && (head->info == inform) ) //查找到,而且只有一个元素
  5. {
  6. delete head;
  7. head = tail = 0;
  8. found=true;
  9. }
  10. else if(head->info == inform) // 在表头,而且链表不止一个元素
  11. {
  12. tmp = head;
  13. head = head->next;
  14. delete tmp;
  15. found=true;
  16. }
  17. else // 不在head
  18. {
  19. CNode<T> *tmp = head->next, *pred = head ;

  20. while( (tmp != 0) && (tmp->info != inform) ) //查找
  21. {
  22. pred = tmp;
  23. tmp = tmp->next;
  24. }

  25. if( tmp != 0 ) //找到
  26. {
  27. if( tmp == tail ) //是最后一个元素
  28. tail = pred;
  29. pred->next = tmp->next;
  30. delete tmp;
  31. found=true;
  32. }
  33. }
  34. if(!found)cout<<"Cann't delete a nonentity information !"<<endl;
  35. else cout<<"\n 删 除 成 功!"<<endl;
  36. }
复制代码

作者: の瘋がす贪恋    时间: 2009-11-3 03:32
to woodhead:
谢谢指出,说实话,我没太在意编这个,这只是我们C++的作业,我也就花了2,3个小时写的,的确是如此,我好蠢,这么低级的错误,呵呵~
作者: ┈ㄝai〾噯儿    时间: 2009-11-3 03:32
刚才改了下:
void Delete(T &inform) //删除
{
bool found=false;CNode<T>* oldNode=NULL;
if(head==NULL) //空表
{cout<<"Can't delete from a empty list!\n";return;}
else if(head->next==NULL)//只有一个元素的表
{
if(head->info == inform)
{
delete head;delete tail;head=NULL;tail=NULL;found=true;
}
else found=false;
}
else
for(CNode<T>*newNode=oldNode=head;newNode;)
{
if(newNode->info==inform)
{
if(newNode==head)//元素在表头
{
head=head->next;//更新链表头
delete newNode;
}
else //不在表头
{
oldNode->next=newNode->next;
delete newNode;
}
found=true; //找到该数据
break;
}
else
{
oldNode=newNode;
newNode=newNode->next;
}
}
if(!found)cout<<"Cann't delete a nonentity information !"<<endl;
else cout<<"\n 删 除 成 功!"<<endl;
}




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2