麻烦帮我看看我这个代码为什么运行结果显示不了。题目是已知两个单链表,元素递增排序,求交集。
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node LNode, *LinkList;
void BUILDLIST(LinkList l)
{
char c;
int a=0,b;
scanf("%d",&b);
LinkList p=l,q=(LinkList)malloc(sizeof(LNode));
LinkList h=(LinkList)malloc(sizeof(LNode));
h->data=b;
p->next=h;
p=h;
while((c=getchar())!='\n')
{scanf("%d",&a);
q->data=a;
q->next=NULL;
p->next=q;
p=q;
}
p->next=NULL;
}
LinkList qbjlist(LinkList l1, LinkList l2)
{
if(l1->next==NULL||l2->next==NULL) return;
int x;
LinkList p1=l1->next;
LinkList p2=l2->next;
while(p1&&p2)
{if(p1->data>p2->data) p2=p2->next;
else if(p1->datadata) p1=p1->next;
else
{printf("%d",p1->data);
p1=p1->next;
p2=p2->next;
}
}
}
int main()
{
LinkList l1=(LinkList)malloc(sizeof(LNode));
LinkList l2=(LinkList)malloc(sizeof(LNode));
l1->next=NULL;
l2->next=NULL;
BUILDLIST(l1);
BUILDLIST(l2);
qbjlist(l1,l2);
printf("\n");
return 0;
}
你这里写错了吧
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node LNode, *LinkList;
void BUILDLIST(LinkList &l)
{
l = new node;
l->next = NULL;
node *r;
r = l;
int n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
printf("请输入链表第%d个元素的值:", i + 1);
node *s;
s = new LNode;
scanf("%d", &s->data);
s->next = NULL;
r->next = s;
r = s;
}
}
LinkList qbjlist(LinkList l1, LinkList l2)
{
if(l1->next==NULL||l2->next==NULL)
return 0;
int x;
LinkList p1=l1->next;
LinkList p2=l2->next;
while(p1&&p2)
{
if(p1->data>p2->data)
p2=p2->next;
else if(p1->data>p2->data)
p1=p1->next;
else
{
printf("%d",p1->data);
p1=p1->next;
p2=p2->next;
}
}
}
int main()
{
LinkList l1=(LinkList)malloc(sizeof(LNode));
LinkList l2=(LinkList)malloc(sizeof(LNode));
l1->next=NULL;
l2->next=NULL;
BUILDLIST(l1);
BUILDLIST(l2);
qbjlist(l1,l2);
printf("\n");
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!