您的位置:首页 > 理论基础 > 数据结构算法

新手学习数据结构与算法---链表归并

2011-10-16 17:18 417 查看
链表的归并要比数组的简单很多啊!

//链表归并
#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
int data;
struct Node * next;
}LinkList;

LinkList * Create()
{
LinkList *Head, *S, *R;
int data;
Head = (LinkList *)malloc(sizeof(LinkList));
Head->next = NULL;             //建立空单链表
R = Head;
scanf("%d", data);
while(data != -1)
{
S = (LinkList *)malloc(sizeof(LinkList));
S->data = data;
S->next = R->next;
R->next = S;
R = S;
scanf("%d", data);
}
return Head;
}

void PrintLinkList(LinkList * p)         //打印单链表
{
p = p->next;
while(p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
}

LinkList * Merge(LinkList *A, LinkList *B)    //将B链表的值放到A中
{
LinkList *p, *q, *prep, *preq;
p = A->next;
q = B->next;
prep = A;
preq = B;
while((p != NULL) && (q != NULL))
{
if(p->data < q->data)
{
prep = p;
p = p->next;
}
else                //否则将B的值插到A中
{
preq = q;
q = q->next;
prep->next = preq;
preq->next = p;
prep = prep->next;
}
}
if(q != NULL)
prep->next = q;
return A;
}

int main()
{
//自己测试
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: