删除单链表的重复结点

📅 2026/7/23 19:02:13
删除单链表的重复结点
本题要求实现一个函数 pur_LinkList(LinkList L)函数是删除带头结点单链表的重复结点。函数接口定义void pur_LinkList(LinkList L);其中L是用户传入的参数。L是带头结点单链表的​头指针。裁判测试程序样例#define FLAG -1 #include stdio.h #include malloc.h typedef int datatype; typedef struct node { datatype data; struct node *next; }LNode, *LinkList; LinkList Creat_LinkList();/*这里忽略函数的实现*/ void pur_LinkList(LinkList L); void Print_LinkList(LinkList L);/*这里忽略函数的实现*/ int main() { LinkList L; L Creat_LinkList(); if(L NULL) { printf(LNULL,error!); return 0; } pur_LinkList(L); Print_LinkList(L); return 0; } /* 请在这里填写答案 */输入样例在这里给出一组输入。例如1 2 3 3 3 4 5 6 7 8 -1输出样例在这里给出相应的输出。例如1 2 3 4 5 6 7 8代码void pur_LinkList(LinkList L) { LinkList p,q,r; pL; while(p-next) { qp-next; rp; while(q) { if(q-data!p-data) { qq-next; rr-next; } else { r-nextq-next; free(q); qr-next; } } pp-next; } }