自己写了一个归并两个有序单链表成为一个有序单链表的程序,奈何运行没有结果。
求教各位网友,本人学生,望不吝赐教。
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
} Node;
Node* creatNode(int i)
{
Node *a = (Node *)malloc(sizeof(Node));
a->data = i;
a->next = NULL;
return a;
}
void insert(Node* p,int k){
Node* insertion;
insertion = creatNode(k);
while(p->next!=NULL){
p = p->next;
}
p->next = insertion;
}
void merge(Node*a,Node*b,Node**c)
{
Node *p, *q; //p和q指针分别指向a和b中最小的元素
p = a->next;
q = b->next;
*c = a;
free(b);
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
insert(*c, p->data);
p = p->next;
}
else{
insert(*c, q->data);
q = q->next;
}
}
while(p!=NULL){
insert(*c, p->data);
p = p->next;
}
while(q!=NULL){
insert(*c, q->data);
q = q->next;
}
}
int main()
{
Node *a = creatNode(0);
insert(a, 2);
insert(a, 4);
insert(a, 6);
Node *b = creatNode(0);
insert(b, 1);
insert(b, 3);
insert(b, 5);
Node *c = creatNode(0);
merge(a, b, &c);
while(c!=NULL){
printf("%d\t", c->data);
c = c->next;
}
getchar();
return 0;
}