【学习点滴-数据结构-单链表】单链表的建立,遍历及有序单链表合并

来源:互联网 发布:.net.cn的域名 编辑:程序博客网 时间:2024/06/05 15:49
/* * 算法功能:建立单链表,遍历单链表,及有序单链表的合并。 * @author:xiaoq-ohmygirl * @time :2012-06-20 **/#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define MAXNODE 5typedef struct linkNode{    int data;    linkNode * next;}linkNode,*linkList;void mergeList(linkList &La,linkList &Lb,linkList &Lc){    linkNode *pa,*pb,*pc;    pa = La->next;    pb = Lb->next;    Lc = pc = La;    while(pa && pb){        if(pa->data <= pb->data){            pc->next = pa;            pc = pa;            pa = pa->next;        }        else{            pc->next = pb;            pc = pb;            pb = pb->next;        }        pc->next = pa ? pa : pb;        free(Lb);    }}//表头后插入节点法建立单链表。逆序输入相应节点的值来建立单链表。int createLinkList(linkList & L,int n){    L = (linkList)malloc(sizeof(linkNode));    if(!L){        return 0;    }    L->next = NULL;    linkList p;    for(int i = n;i > 0;i--){         p = (linkList)malloc(sizeof(linkNode));         scanf("%d",&p->data);         p->next = L->next;         L->next = p;    }    return 1;}void visit(linkNode * node){    printf("%d ",node->data);}void getNewLine(){    printf("\n");}void traverseLink(linkList L){    linkNode* cur = L->next;    getNewLine();    while(cur != NULL){        visit(cur);        cur = cur->next;    }    getNewLine();}int main(){    linkList La = NULL;    linkList Lb = NULL;    linkList Lc = NULL;    int asize,bsize;    asize = bsize = MAXNODE;    createLinkList(La,asize);    createLinkList(Lb,bsize);    traverseLink(La);    traverseLink(Lb);    mergeList(La,Lb,Lc);    traverseLink(Lc);    system("pause");    return 0;}