1.注意临时指针还是用来保存指针值,不要用来指结点
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
LinkList CreateList()
{
LinkList L;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode *q = L;
LNode *p;
int x;
scanf("%d",&x);
while(x != 999)
{
p = (struct LNode *)malloc(sizeof(LNode));
p->data = x;
p->next = NULL;
q->next = p;
q = p;
scanf("%d",&x);
}
return L;
}
void main()
{
LinkList a = (LinkList)malloc(sizeof(LNode));
LinkList b = (LinkList)malloc(sizeof(LNode));
a = CreateList();
b = CreateList();
LinkList c = (LinkList)malloc(sizeof(LNode));
c->next = NULL;
LNode *p = a->next;
LNode *q = b->next;
LNode *y;
while(p != NULL && q != NULL)
{
if(p->data <= q->data)
{
y = p->next;
p->next = c->next;
c->next = p;
p = y;
}
if(p->data > q->data)
{
y = q->next;
q->next = c->next;
c->next = q;
q = y;
}
}
//ex
if(q)
p = q;
while(p != NULL)
{
y = p->next;
p->next = c->next;
c->next = p;
p = y;
}
y = c->next;
while(y != NULL)
{
printf("%d ",y->data);
y = y->next;
}
}