📄 3_3.txt
字号:
#include<stdio.h>
typedef struct node{ /*结点类型*/
int data;
struct node *next;
}Llist;
createlist(Llist **h,int a[],int n)
{
int i;Llist *s,*r;
for(i=0;i<n;i++) /*在表尾插入结点*/
{
s=(Llist *)malloc(sizeof(Llist));
s->data=a[i];
s->next=NULL;
if(*h==NULL){*h=s;
r=s;}
else { r->next=s;
r=s;}
}
}
delete1(Llist **a)
{
Llist *p,*q,*temp;
p=*a;
if(p==NULL)return 1;
q=p->next;
p->next=NULL;
while(q)
if(q->data==p->data){temp=q;q=q->next;free(temp);}
else{
p->next=q;
p=q;
q=q->next;
p->next=NULL;
}
}
delete2(Llist **b)
{
Llist *p,*q,*temp,*r;int find;
p=*b;
if(p==NULL)return 1;
q=p->next;
p->next=NULL;
while(q){
find=0;
r=*b;
while(r) /*在已经搜索过的链表中查找是否存在值相等的结点*/
if(r->data==q->data){find=1;break;}
else
r=r->next;
if(find){temp=q;q=q->next;free(temp);} /*找到重复的结点*/
else{
p->next=q;
p=q;
q=q->next;
p->next=NULL;
}
} /*while*/
}
main()
{
int a[]={-1,3,3,5,7,10},b[]={-1,2,5,10,2,8};
Llist *a1=NULL,*b1=NULL,*p;
createlist(&a1,a,6); /*建立链表A*/
createlist(&b1,b,6); /*建立链表B*/
delete1(&a1); /*删除链表A中的重复元素*/
p=a1;
while(p){
printf("%d ",p->data);
p=p->next;
}
delete2(&b1); /*删除链表B中的重复元素*/
p=b1;
while(p){
printf("%d ",p->data);
p=p->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -