首页 > 代码库 > 链表合并

链表合并

设有两个无头结点的单链表,头指针分别为hahb,链中有数据域data,链域next,两链表的数据都按递增序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。


#include<stdio.h> /// no have dead node  ha and hb >>ha
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

LinkList CreateLink(int n)  /// 创建表
{
    LinkList h=(LinkList)malloc(sizeof(LNode)),q;
    scanf("%d",&h->data);
    h->next=NULL;
    q=h;
    for(int i=1;i<n;i++){
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=NULL;

        q->next=p;
        q=p;
    }
    return h;  /// 返回头指针
}
void print(LinkList h);
LinkList MergeList(LinkList ha,LinkList hb)
{
    LinkList p,hc,pc;
    p=(LinkList)malloc(sizeof(LNode));
    p->next=NULL;

    hc=pc=p;
    while(ha&&hb)
    {
        if(ha->data < hb->data){
            p=(LinkList)malloc(sizeof(LNode));
            p->next=NULL;
            p->data=http://www.mamicode.com/ha->data;>



实验结果,hb插入ha中,并且hb不变,ha仍然递增

链表合并