#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Node{
int data;
struct Node *next;
}Node,*List;
List print(Node *s){
s=s->next;
while(s){
printf("%2d",s->data);
s=s->next;
}
}
List InitList(int data[],int n){
Node Head,*p,*r;
Head.next=NULL;
List L=&Head;
L=(List)malloc(sizeof(Node));
L->next=NULL;
r=L;
for(int i=0;i<n;i++){
p=(Node*)malloc(sizeof(Node));
p->data=data[i];
r->next=p;
r=p;
}
r->next=NULL;
return L;
}
void Getitem(List LA,List LB){
int data[5],i=0;
Node *Head=LB;
LA=LA->next;
LB=LB->next;
while(LA){
LB=Head->next;
while(LB){
if(LA->data==LB->data){
data[i]=LA->data;
i++;
}
LB=LB->next;
}
LA=LA->next;
}
for(int j=0;j<i;j++){
printf("%2d",data[j]);
}
}
int main(){
int dataA[5]={1,2,3,4,5};
List LA=InitList(dataA,5);
printf("原始LA链表为:");
print(LA);
int dataB[5]={2,3,3,5,1};
List LB=InitList(dataB,5);
printf("\n原始LB链表为:");
print(LB);
printf("\n公共结点为:");
Getitem(LA,LB);
}
C语言求两个链表的公共结点
最新推荐文章于 2024-09-20 06:50:08 发布