首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

单链表中元素的剔除

2012-10-16 
单链表中元素的删除下面代码是要删除A表中B,C表都有的的元素,即a∈A∩B∩C,不过写挫了,搞了一上午没搞出来,求

单链表中元素的删除
下面代码是要删除A表中B,C表都有的的元素,即a∈A∩B∩C,不过写挫了,搞了一上午没搞出来,求高手不吝赐教!
说明:表中元素递增存储。

C/C++ code
bool est(NODE *a,NODE *&b){     bool i=false;     while(b&&(a->dat>=b->dat)){           if(a->dat==b->dat)i=true;           b=b->next;     }     return i;}bool del_com(NODE *pa,NODE *pb,NODE *pc){//删除成功返回1,否则返回0     int c=pa->dat,t;//c is used to count the number of elements in the list     NODE *p=NULL,*ha=pa,*pre=pa;//pre用于记下A表当前元素位置,以维护链表     pa=pa->next;     pb=pb->next;     pc=pc->next;//skip the head node     while(pa){           if(est(pa,pb)&&est(pa,pc)){//delete              t=pa->dat;              while(pa&&(pa->dat==t)){                    p=pa;                    pa=pa->next;                    free(p);              }              pre->next=pa;//重连、结束表           }           else pa=pa->next;//判断下一个           pre=pa;//更新A表当前元素位置     }     ha->dat=c;     if(p)return true;//即未删除元素     return false;}


[解决办法]
链表也是我的弱项 一起学习学些
[解决办法]
代码就不写了 非常容易的 写个思路(比较笨)
定义个函数如:void 函数名(链表 a,链表 b)
if(a)//判读a的合法性
while(b)//b不为空
{
链表指针 temp = a;
用temp遍历a中的元素 while(temp)
{if(temp->data == b->data) 删除temp指向的节点 break;
else temp = temp->next;}
b = b->next();
}
再在main中分别调用 函数(a,b) 函数(a,c)


如果还不会的话 就留邮箱吧 发到我的QQ944894913

热点排行