?? 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 + -