C语言,删除单链表重复数据

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:48:11
删除一个顺序单链表的重复数值
例如1122334455,执行函数后应得到结果12345
函数代码如下:
void pur_linklist(LinkList H)
{
LNode *q,*r;
q=H->next;
if(q==NULL) return;
while(q->next)
{
if(q->data==q->next->data)
{
r=q->next;
q->next=r->next;
free(r);
q=q->next;
}
else q=q->next;
}
}
编译通过
经测试,不执行if语句时无异常
当输入重复值,也就是要执行if语句的时候,出现遇到错误需要关闭
另外,我是在C++环境编译运行的,如果需要,我会提供整段代码。
回1楼,我说了,单链表是有序结构,不存在你说的这种情况
#include<stdio.h>
typedef struct node
{
int data;
struct node *next;
}LNode,*LinkList;
LinkList Create_LinkList()
{
LinkList L=NULL;
LNode *s,*h=NULL;
int x;
scanf("%d",&x);
while(x!=-1)
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
if(L==NULL) L=s;
else h->next=

你的情重复情况下连续的,如果是12365136这种情况下呢!!
你把原程序贴上,我帮你改改吧

修改语句如下:

linklist other;
other=(linklist)malloc(sizeof(lnode));
other->data=H->data;
other->next=H->next;
H->next=other;
这样就可以了。我在自己机子也调试了,结果是正确

再弄个头节点,struct node *head;