#include <stdio.h>
#include <stdlib.h>
typedef struct NODE
{
int data;
struct NODE *next;
}NODE;
NODE* create_list()
{
NODE *p = (NODE*)malloc(sizeof(NODE));
if(!p)
{
printf("Failed to create a link head.");
exit(-1);
}
p->next =NULL;
return p;
}
void printlist(NODE* L)
{
NODE* p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void insertByTail(NODE *L,int n)
{
NODE *r=L;
while(n--)
{
int data;
scanf("%d",&data);
NODE *p = (NODE*)malloc(sizeof(NODE));
p->data = data;
p->next = r->next;
r->next = p;
r = p;
}
return;
}
int main()
{
int m,n,p;
scanf("%d %d %d",&m,&n,&p);
NODE *A=create_list(),*B=create_list(),*C=create_list();
insertByTail(A,m);
insertByTail(B,n);
insertByTail(C,p);
NODE* pa=A->next,*pb=B->next,*pc=C->next;
NODE *prior=pa;
while(pa&&pb&&pc)
{
if(pa->data < pb->data)
{
prior = pa;
pa = pa->next;
}
else if( pb->data < pc->data)
{
pb = pb->next;
}
else if( pc->data < pa->data)
{
pc = pc->next;
}
else //相等
{
prior->next = pa->next;
free(pa);
pa=prior->next;
}
}
printlist(A);
return 0;
}
数据结构理论课noj(5) 单链表的删除
于 2022-03-27 10:40:12 首次发布