【学习点滴-数据结构-单链表】单链表的建立,遍历及有序单链表合并
来源:互联网 发布:.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;}