#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode
{
int data;
LinkNode *next;
}LinkNode,*LinkList;
void deleteSimilar(LinkList La,LinkList Lb,LinkList Lc)
{
LinkNode *pCurA=La->next;
LinkNode *pCurB=Lb->next;
LinkNode *pCurC=Lc->next;
LinkNode *preCurC=Lc;
while(pCurA!=NULL && pCurB!=NULL && pCurC!=NULL)
{
if(pCurA->data< pCurB->data)
{
pCurA=pCurA->next;
}
else if(pCurA->data > pCurB->data)
{
pCurB=pCurB->next;
}
else
{
int r=pCurB->data;
while(pCurC!=NULL)
{
if(pCurC->data==r)
{
preCurC->next=pCurC->next;
free(pCurC);
pCurC=preCurC->next;
break;
}
preCurC=pCurC;
pCurC=pCurC->next;
}
pCurA=pCurA->next;
pCurB=pCurB->next;
}
// printf("-----");
}
// printf("-----");
}
void print(LinkList L)
{
LinkNode *pNode=L->next;
while(pNode !=NULL)
{
printf("%d",pNode->data);
pNode=pNode->next;
}
printf("\n");
}
void createTail(LinkList &L,int enterList [],int length)
{
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
LinkNode *pTail=L;
int i=0;
while(i<length)
{
LinkNode *pNode=(LinkNode *)malloc(sizeof(LinkNode));
pNode->data=enterList[i];
pNode->next=NULL;
pTail->next=pNode;
pTail=pNode;
i++;
}
}
int main()
{
LinkList La;
int enterList[]={1,2,5,7};
int length =4;
createTail(La,enterList,4);
print(La);
LinkList Lb;
int enterList1[]={1,2,3,6};
createTail(Lb,enterList1,4);
print(Lb);
LinkList Lc;
int enterList2[]={1,2,5};
createTail(Lc,enterList2,3);
print(Lc);
deleteSimilar(La,Lb,Lc);
// printf("-----");
print(Lc);
}
杨晟数据结构:删除三链表中相同结点
最新推荐文章于 2024-10-08 19:59:42 发布
本文介绍了一个C语言程序,定义了一个链表结构并实现了deleteSimilar函数,用于从链表La、Lb和Lc中删除与Lb中值相同的元素,并展示了创建链表和打印链表的过程。
摘要由CSDN通过智能技术生成