希望大家帮我看看,用链表写出了什么错啊。崩溃了
这里是代码
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node//创建
{
int data;
struct Node *next;
}LNode,*Listnode;
int length=0;
void InitLNode(LNode* head,int len) //输入
{
int i;
LNode *news;
LNode *node;
head->next=news;
node = head;
for(i=0;i<len;i++)
{
news = (LNode*)malloc(sizeof(LNode));
scanf("%d",&news->data);
news->next = NULL;
node->next = news;
node = news;
}
}
void Display(LNode *head)//输出
{
if(length!=0)
{
LNode *node;
node=head;
while(node->next!=NULL)
{
node = node->next;
printf("%d ",node->data);
}
}
}
LNode* InterSet(LNode *p1,LNode *p2,LNode *C)//求交集
{
LNode *node1 = p1;
LNode *node2 = p2;
LNode *node3 = C;
LNode *news3;
C = news3;
while(node1->next!=NULL)
{
node1=node1->next;
while(node2->next!=NULL)
{
node2=node2->next;
if(node1->data == node2->data)
{
news3 = (LNode*)malloc(sizeof(LNode));
length++;
news3->data = node1->data;
news3->next = NULL;
node3->next = news3;
node3=news3;
}
}
node2 = p2;
}
node3 = C;
return C;
}
LNode* AddSet(LNode *p1,LNode *p2,LNode *D)//求并集
{
LNode *node1 = p1;
LNode *node2 = p2;
LNode *node3 = D;
LNode *news3;
LNode *news4;
D = news3;
while(node1->next!=NULL)
{
node1=node1->next;
while(node2->next!=NULL)
{
node2=node2->next;
if(node1->data == node2->data)
{
news3 = (LNode*)malloc(sizeof(LNode));
length++;
news3->data = node1->data;
news3->next = NULL;
node3->next = news3;
node3=news3;
}
else
{
news3 = (LNode*)malloc(sizeof(LNode));
news4 = (LNode*)malloc(sizeof(LNode));
length= length + 2;
news3->data = node1->data;
news4->data = node2->data;
news3->next = news4;
news4->next = news3;
news3->next = NULL;
news3 = node3;
}
}
node2 = p2;
}
node3 = D;
return D;
}
LNode* DifSet(LNode *p1,LNode *p2,LNode *E)//求差集
{
LNode *node1 = p1;
LNode *node2 = p2;
LNode *node3 = E;
LNode *news3;
LNode *news4;
E = news3;
while(node1->next!=NULL)
{
node1=node1->next;
while(node2->next!=NULL)
{
node2=node2->next;
if(node1->data != node2->data)
{
news3 = (LNode*)malloc(sizeof(LNode));
news4 = (LNode*)malloc(sizeof(LNode));
length= length + 2;
news3->data = node1->data;
news4->data = node2->data;
news3->next = news4;
news4->next = news3;
news3->next = NULL;
news3 = node3;
}
else break;
}
node2 = p2;
}
node3 = E;
return E;
}
int main()
{
LNode *a;
LNode *b;
LNode *c;
LNode *d;
LNode *e;
int length1,length2 ;
a = (LNode*)malloc(sizeof(LNode));
b = (LNode*)malloc(sizeof(LNode));
c = (LNode*)malloc(sizeof(LNode));
d = (LNode*)malloc(sizeof(LNode));
e = (LNode*)malloc(sizeof(LNode));
printf("请输入元素个数:");
scanf("%d",&length1);
printf("请输入元素");
InitLNode(a,length1);
printf("请输入元素个数:");
scanf("%d",&length2);
printf("请输入元素");
InitLNode(b,length2);
InterSet(a,b,c);
printf("输出交集元素:");
Display(c);
printf("\n");
AddSet(a,b,d);
printf("输出并集元素:");
Display(d);
printf("\n");
DifSet(c,d,e);
printf("输出差集元素:");
Display(e);
printf("\n");
return 0;
}
```