各位帮我看看我这怎么调试啊
#include<stdio.h>
#include<malloc.h>
struct element{
char a;
struct element *next;
};
struct element *linked(int n)
{
struct element *head;
struct element *p1,*p2;
char b;
int i;
scanf("%c",&b);
for(i=0;i<n;i++)
{
p1=p2=(struct element*)malloc(sizeof(struct element));
p1->a=b;
p1->next=NULL;
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
scanf("%c",&b);
}
return head;
}
int main(void)
{
struct element *head1,*head2,*p,*p3;
extern struct element *p1,*p2;
int n,m;
scanf("%d",&n);
head1=linked(n);
p3=p2;
scanf("%d",&m);
head2=linked(m);
p3->next=head2;
p=head1;
while(p->next!=NULL)
{
printf("%c ",p->a);
}
return 0;
}
extern struct element *p1,*p2;
你要干嘛?
#include<stdio.h>
#include<malloc.h>
struct element{
char a;
struct element *next;
};
struct element *linked(int n)
{
struct element *head = NULL; // 初始化为空
struct element *p1 = NULL, *p2 = NULL;
char b;
int i;
for(i=0;i<n;i++)
{
p1 = (struct element*)malloc(sizeof(struct element));
p1->a = b;
p1->next = NULL;
scanf("%c",&b);
if(head==NULL) {
head = p1;
}
else {
p2->next=p1;
}
p2=p1;
}
return head;
}
int main(void)
{
struct element *head1, *head2, *p, *p3;
int n,m;
scanf("%d",&n);
if(n <= 0) { // 当节点数小于等于 0 时,直接退出
return 0;
}
head1 = linked(n);
p3 = p2;
scanf("%d",&m);
if(m <= 0) { // 当节点数小于等于 0 时,直接退出
return 0;
}
head2 = linked(m);
p3->next = head2;
p = head1;
while(p != NULL) { // 打印链表需要依次遍历
printf("%c ",p->a);
p = p->next;
}
return 0;
}
修改如下,改动处见注释,供参考:
#include<stdio.h>
#include<malloc.h>
struct element{
char a;
struct element *next;
};
struct element *linked(int n)
{
struct element *head=NULL; // 修改
struct element *p1,*p2;
char b;
int i;
//scanf(" %c",&b);修改
for(i=0;i<n;i++)
{
scanf(" %c",&b); //修改
p1=(struct element*)malloc(sizeof(struct element)); //修改
//p1=p2=(struct element*)malloc(sizeof(struct element));
p1->a=b;
p1->next=NULL;
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
}
return head;
}
int main(void)
{
struct element *head1,*head2,*p,*p3;
//extern struct element *p1,*p2; 修改
int n,m;
scanf("%d",&n);
head1=linked(n);
//p3=p2; 修改
scanf("%d",&m);
head2=linked(m);
//p3->next=head2;修改
p=head1;
while(p!=NULL) //while(p->next!=NULL)修改
{
printf("%c ",p->a);
p = p->next; // 修改
}
return 0;
}