#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}LNode,*LinkList;
LinkList Creat_LinkList()
{
LinkList H;
H=(LinkList)malloc(sizeof(LNode));
if(H)
H->next=NULL;
return H;
}
void Destroy_(LinkList H)
{
LinkList p,q;
p=H;
while(p)
{
q=p;
p=p->next;
free(q);
}
H=NULL;
}
int Length_LinkList(LinkList H)
{
LinkList p=H;
int count =-1;
while(p)
{
p=p->next;
count++;
}
return count;
}
LinkList Locate_LinkList(LinkList H,int i)
{
LinkList p=H;
int j;
j=0;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||i!=j)
{
printf("参数i错误或者单链表不存在:");
return 0;
}
return p;
}
LinkList Locate_LinkList_valube(LinkList H,int x)
{
LinkList p=H->next;
while(p&&p->data!=x)
{
p=p->next;
}
return p;
}
int insert_LinkList(LinkList H,int i,int x)
{
LinkList p,q;
p=Locate_LinkList (H,i-1);
if(!p)
{
printf("单链表不存在:");
return 0;
}
q=(LinkList)malloc(sizeof(LNode));
if(!q)
{
printf("开辟空间失败:");
return 0;
}
p->data=x;
q->next=p->next;
p->next=q;
return 1;
}
int Del_LinkList(LinkList H,int i)
{
if(!H||H->next==NULL)
{
printf("单链表不存在:");
return 0;
}
LinkList p,q;
p=Locate_LinkList (H,i-1);
if(!p||p->next==NULL)
{
printf("单链表不存在:");
return 0;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
void reverse_LinkList(LinkList H)
{
LinkList p,q;
p=H->next;
H->next=NULL;
while(p)
{
q=p;
p=p->next;
q->next=H->next;
H->next=q;
}
}
void ajiaob(LinkList A,LinkList B)
{
int x;
LinkList p,pre;
pre=A,p=pre->next;
while(p)
{
x=p->data;
if(Locate_LinkList_valube(B,x))
{
pre->next=p->next;
free(p);
p=pre->next;
}
else
{
pre=p;
p=p->next;
}
}
}
void abingb(LinkList A,LinkList B)
{
int x;
LinkList p;
p=B->next;
while(p)
{
x=p->data;
if(!Locate_LinkList_valube(A,x))
{
insert_LinkList(A,1,x);
}
else
{
p=p->next;
}
}
}
int main()
{
int i,j;
int a[8]={1,2,3,4,5,6,7,8},b[6]={1,3,5,10,16,19};
LinkList A,B;
A=Creat_LinkList();
B=Creat_LinkList();
for(i=0;i<8;i++)
{
insert_LinkList(A,i+1,a[i]);
}
for(j=0;j<6;j++)
{
insert_LinkList(B,j+1,b[j]);
}
LinkList A_B,AUB;
A_B=Creat_LinkList();
AUB=Creat_LinkList();
int a_b,aub;
a_b=Length_LinkList(A);
aub=Length_LinkList(B);
for(i=0;i<a_b;i++)
{
insert_LinkList(A_B,i+1,a[i]);
}
ajiaob(A_B,B);
for(j=0;i<aub;j++)
{
insert_LinkList(A_B,j+1,b[j]);
}
abingb(AUB,B);
printf("A_B:");
for(i=0;i<a_b;i++)
{
LinkList p=A_B->next;
for(j=0;j<=i;j++)
{
p=p->next;
}
printf("%d ",p->data);
}
for(i=0;i<aub;i++)
{
LinkList pre=AUB->next,p;
p=pre->next;
for(j=0;j<=i;j++)
{
pre=p;
p=p->next;
}
printf("%d ",p->data);
}//输出链表中元素的功能
return 0;
}
这是一个用单链表实现集合A-B,AUB功能的代码,不知为何会运行后直接无任何输出就结束了