数据结构 有序链表的合并c源代码
#include#include typedef struct LNode//定义结构体 { int data; LNode *next; }LNode,*linkList; int InitList(linkList &L)//单链表初始化 { L=new LNode; L->next=NULL; return 1; } void CreateList_L(linkList &L,int n)//尾插法建立单链表(此处采用尾插法的好处在于可以顺序输入) { L=new LNode; L->next=NULL; LNode *r=L; for(int i=1;i<=n;++i) { LNode *p=new LNode; printf("t输入第%d/%d个值:",i,n); scanf("%d",&p->data); p->next=NULL; r->next=p; r=p; } } void MergeList_L(linkList &LA,linkList &LB,linkList &LC)//链表合并函数 { LNode *pa=LA->next;LNode *pb=LB->next; LC=LA; LNode *pc=LC; 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; delete LB; } void output(linkList L)//输出链表 { LNode *p=L; p=L->next; while(p) { printf("%dt",p->data); p=p->next; } printf("n"); } int main() { linkList LA,LB,LC; InitList(LA); InitList(LB); int n1,n2; printf("请输入第一个非递减单链表的结点个数:n"); scanf("%d",&n1); printf("请输入第一个非递减单链表的数据:n"); CreateList_L(LA,n1); printf("请输入第二个非递减单链表的结点个数:n"); scanf("%d",&n2); printf("请输入第二个非递减单链表的数据:n"); CreateList_L(LB,n2); printf("LA:"); output(LA); printf("LB:"); output(LB); MergeList_L(LA,LB,LC); printf("合并之后的链表LC:"); output(LC); }
点赞关注不迷路



