两个 链表的合并 怎么运行就是不对 #include
#include
#include
struct jg
{
int data;
struct jg *next;
};
void attach(int a, struct jg** nrear)
{
struct jg *p;
p = (struct jg *)malloc(sizeof(struct jg));
p->data = a;
p->next = NULL;
(*nrear)->next = p;
*nrear = p;
}
struct jg* read()
{
struct jg* p;
struct jg* rear;
struct jg* t;
p=(struct jg )malloc(sizeof(struct jg));
int a, m;
scanf("%d", &a);
p->next=NULL;
rear=p;
while (a--)
{
scanf("%d", &m);
attach(m,&rear);
}
t = p;
p = p->next;
free(t);
return p;
}
struct jg add( struct jg* p1,struct jg* p2)
{
struct jg *p, *rear, *t;
p = (struct jg *)malloc(sizeof(struct jg));
rear = p;
p->next = NULL;
while(p1&&p2)
{
if (p1->data > p2->data)
{
attach(p2->data, &rear);
p2 = p2->next;
}
else if (p1->data = p2->data)
{
attach(p1->data, &rear);
p1 = p1->next;
p2=p2->next;
}
else
{
attach(p1->data, &rear);
p1 = p1->next;
}
}
while (p1)
{
attach(p1->data, &rear);
p1 = p1->next;
}
while(p2)
{
attach(p2->data, &rear);
p2 = p2->next;
}
t = p;
p = p->next;
free(t);
return p;
}
void print( struct jg *p1)
{
int a = 0;
while(p1)
{
if (a ==0)
{
a = 1;
}
else
{
printf(" ");
}
printf("%d",p1->data);
p1= p1->next;
}
}
int main()
{
struct jg *p1, *p2,*p3;
p1 = read();
p2 = read();
p3 = add(p1, p2);
print(p3);
system("pause");
return 0;
}
不知道为啥 程序运行怎么就不对呢 两个链表合并
按照大家说的改完之后成这样了