打印

链表问题

[复制链接]
846|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-4-8 21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
nex, ST, link, AD, pc
删除带头结点的链表中重复元素的问题
#include <iostream>
using namespace std;

typedef struct LNode //创建结点类型
{
int data;
struct LNode *next;
}LNode, *LinkList;

void CreateLinkList(LinkList &head)
{
head=new LNode;
LinkList p1, p2;
int e;
head->data=0;
head->next=NULL;
cout<<"请输入一个递增排列的有序数列,以空格分隔,输入 0 结束"<<endl;
cin>>e;
while(e!=0)
{
if(head->next==NULL) //处理第一个结点

{
p1=new LNode;
p1->data=e;
p1->next=NULL;
head->next=p1;
}
else
{
p2=p1;
p1=new LNode;
p1->data=e;
p1->next=NULL;
p2->next=p1;
}
cin>>e;
}
}

void Purge_L(LinkList &L)
{
LNode *pa=L->next;
while(pa->next)
{
LNode *pb_pri=pa, *pb_cur=pa->next, *pc;
while(pb_cur->next)
{
if(pa->data==pb_cur->data)
{
pb_pri->next=pb_cur->next;
pc=pb_cur;
pb_cur=pb_cur->next;
delete pc;
}
else
{
pb_pri=pb_cur;
pb_cur=pb_cur->next;
}
if(pb_cur->data==pa->data&&pb_cur->next==NULL)
{
pb_pri->next=NULL;
pb_cur->next=NULL;
pc=pb_cur;
delete pc;
}
}//while
pa=pa->next;
}//while
}

void ShowLinkList(LinkList L)
{
LinkList p=L->next;
while(p->next)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<p->data;
cout<<endl;
}

int main()
{
  LinkList L, L1;
CreateLinkList(L);
ShowLinkList(L);
Purge_L(L);
ShowLinkList(L);
return 0;
}


代码如上,链表中的元素不要求有序,烦请高手赐教!

相关帖子

沙发
hsbjb| | 2012-4-8 21:37 | 只看该作者
需要使用delete
逻辑错误.最后那个重复的元素没有删除

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝