# 关于两个有序链表序列的交集问题

``````
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int Data;
struct Node *Next;
}node,*List;
int main(){
List L1,L2,L3,h;
L3=h=(List)malloc(sizeof(struct Node));
while(L1!=NULL){
L3->Next=(List)malloc(sizeof(struct Node));
while(L2!=NULL){
if(L1->Data==L2->Data){
L3->Next->Data=L1->Data;
L3=L3->Next;
}
L2=L2->Next;
}
L1=L1->Next;
}
L3->Next=NULL;
L3=h->Next;
free(h);
if(L3==NULL){
printf("NULL");
}else{
while(L3!=NULL){
printf("%d",L3->Data);
L3=L3->Next;
}
}
return 0;
}
List L,h;
int n;
L=h=(List)malloc(sizeof(struct Node));
scanf("%d",&n);
while(n!=-1){
L->Next=(List)malloc(sizeof(struct Node));
L->Next->Data=n;
L=L->Next;
scanf("%d",&n);
}
L->Next=NULL;
L=h->Next;
free(h);
h=L;
return h;
``````

• 写回答

#### 1条回答默认 最新

• 社区专家-Monster-XH 2023-03-28 23:51
关注

我觉得还是逻辑问题吧，没把链表的头结点和第一个数据节点分离开来，感觉在读取输入的时候也有问题。改了下：

``````#include <stdio.h>
#include <stdlib.h>

typedef struct Node{
int Data;
struct Node *Next;
}node, *List;

List intersection(List L1, List L2); // 求两个链表的交集
void printList(List L); // 打印链表

int main(){
List L1, L2, L3;
L3 = intersection(L1, L2);
printList(L3);
return 0;
}

List L, h, p;
int n;
h = (List)malloc(sizeof(node));
p = h;
scanf("%d", &n);
while(n != -1){
L = (List)malloc(sizeof(node));
L->Data = n;
p->Next = L;
p = L;
scanf("%d", &n);
}
p->Next = NULL;
L = h->Next;
free(h);
return L;
}

List intersection(List L1, List L2){
List h, p, q;
h = (List)malloc(sizeof(node));
p = h;
while(L1 != NULL && L2 != NULL){
if(L1->Data < L2->Data){
L1 = L1->Next;
}else if(L1->Data > L2->Data){
L2 = L2->Next;
}else{
q = (List)malloc(sizeof(node));
q->Data = L1->Data;
p->Next = q;
p = q;
L1 = L1->Next;
L2 = L2->Next;
}
}
p->Next = NULL;
List L3 = h->Next;
free(h);
return L3;
}

void printList(List L){
if(L == NULL){
printf("NULL");
}else{
while(L != NULL){
printf("%d ", L->Data);
L = L->Next;
}
}
}

``````

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 问题事件

• 已结题 （查看结题原因） 3月29日
• 已采纳回答 3月29日
• 修改了问题 3月28日
• 修改了问题 3月28日
• 展开全部

#### 悬赏问题

• ¥15 基于ucc28019的pfc电路中芯片一直不工作
• ¥15 yolov8在3588板子端c++推理报错
• ¥50 unitywebrequest分段下载导致报错，如何解决？
• ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
• ¥15 WPF如何用Chart绘画出Y轴的左边数据
• ¥15 pycharm无法查看内置代码
• ¥15 跑hls xfopencv的例程standalone_hls_axi_example出的错误，csim没问题，c synthesis出的错误
• ¥15 sqlserver update语句逐行生效
• ¥20 Windows10系统命令行调用
• ¥15 php环境如何实现国密SM2相关功能