链表合并

来源:互联网 发布:grub2 引导linux 编辑:程序博客网 时间:2024/06/06 03:39

设有两个无头结点的单链表,头指针分别为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=ha->data;            pc->next=p;pc=p;ha=ha->next;        }        else if(ha->data > hb->data){            p=(LinkList)malloc(sizeof(LNode));            p->next=NULL;            p->data=hb->data;            pc->next=p;pc=p;hb=hb->next;        }        else{            /**            p=(LinkList)malloc(sizeof(LNode));            p->next=NULL;            p->data=ha->data;            pc->next=p;            pc=p;            ha=ha->next;            */            hb=hb->next; /// ha中有hb的元素,hb直接指向下一结点        }    }    pc->next=ha?ha:hb;  ///  指向剩余的链表    return hc->next;    /// 返回无头结点的指针}void print(LinkList h){    while(h!=NULL){        printf("%d ",h->data);        h=h->next;    }    printf("\n");}int main(){    int n,m;    scanf("%d",&n);   ///ha    LinkList ha=CreateLink(n);    scanf("%d",&m);    ///hb    LinkList hb=CreateLink(m);    printf("\nBefore MergeList\n");    print(ha);    print(hb);    ha=MergeList(ha,hb);    printf("After MergeList\n");    print(ha);    print(hb);    return 0;}/**61 5 7 9 34  7550 4 5 5 76*/




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

0 0
原创粉丝点击