报错提示:
源代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int v;
struct Node* Pre;
struct Node* pNext;
int len;
}Node , *PNode;
PNode Create_List(int);
void Print_List(PNode );
void Delete_elenum(PNode , PNode , PNode );
void Init_List(PNode);
int length_list(PNode L);
int main(void)
{
int a, b, c;
PNode A = (PNode)malloc(sizeof(Node));
//Init_List(A);
PNode B = (PNode)malloc(sizeof(Node));
//Init_List(B);
PNode C = (PNode)malloc(sizeof(Node));
//Init_List(C);
scanf("%d%d%d", &a , &b , &c);
A = Create_List(a);
B = Create_List(b);
C = Create_List(c);
Delete_elenum(A, B, C);
Print_List(A);
return 0;
}
void Init_List(PNode L)
{
L->v = 0;
L->pNext = NULL;
L->Pre = NULL;
L->len = 0;
}
int length_list(PNode L)
{
PNode p = L->pNext;
int len = 0;
while (NULL != p)
{
len++;
p = p->pNext;
}
return len;
}
PNode Create_List(int len)
{
int v;
PNode pHead = (PNode)malloc(sizeof(Node));
pHead->len = len;
pHead->Pre = NULL;
PNode Head = pHead;
PNode Tail = pHead;
for (int i = 0; i < len; i++)
{
PNode pNew = (PNode)malloc(sizeof(Node));
scanf("%d", &v);
pNew->v = v;
Tail->pNext = pNew;
pNew->pNext = NULL;
Tail = pNew;
pNew->Pre = Head;
Head = pNew;
}
return pHead;
}
void Print_List(PNode L)
{
PNode p = L->pNext;
while (NULL != p)
{
printf("%d ", p->v);
p = p->pNext;
}
}
void Delete_elenum(PNode A, PNode B, PNode C)
{
int a, b, c;
a = length_list(A);
b = length_list(B);
c = length_list(C);
PNode p = A->pNext;
for (int i = 0; i < a; i++ )
{
PNode q = B->pNext;
PNode r = C->pNext;
PNode temp = NULL;
while(NULL != q)
{
if (p->v == q->v)
break;
if (NULL == q->pNext)
break;
q = q->pNext;
}
while(NULL != r)
{
if (p->v == r->v)
break;
if (NULL == r->pNext)
break;
r = r->pNext;
}
if (q->v == r->v)
{
temp = p;
PNode s = NULL;
s = p->Pre;
s->pNext = p->pNext;
free(temp);
}
if (NULL == p->pNext)
break;
p = p->pNext;
}
}