新微赢技术网
标题:
[原创]C++程序设计实践报告
[打印本页]
作者:
aiq無奈tx
时间:
2009-11-3 03:32
标题:
[原创]C++程序设计实践报告
C++作业,分享
附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
作者:
駃旒_鎏蒗瀦
时间:
2009-11-3 03:32
支持一下
感觉mylist的删除考虑的不全面,改了一下,不过没运行。
void Delete(T &inform) //删除
{
bool found=false;
if( (head == tail) && (head->info == inform) ) //查找到,而且只有一个元素
{
delete head;
head = tail = 0;
found=true;
}
else if(head->info == inform) // 在表头,而且链表不止一个元素
{
tmp = head;
head = head->next;
delete tmp;
found=true;
}
else // 不在head
{
CNode<T> *tmp = head->next, *pred = head ;
while( (tmp != 0) && (tmp->info != inform) ) //查找
{
pred = tmp;
tmp = tmp->next;
}
if( tmp != 0 ) //找到
{
if( tmp == tail ) //是最后一个元素
tail = pred;
pred->next = tmp->next;
delete tmp;
found=true;
}
}
if(!found)cout<<"Cann't delete a nonentity information !"<<endl;
else cout<<"\n 删 除 成 功!"<<endl;
}
复制代码
作者:
の瘋がす贪恋
时间:
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