#include <stdio.h> typedef struct LNode{ int data; struct LNode* next; }LNode,*linkList; void initList(linkList &l) { l=new LNode; if(l==NULL) printf("分配内存失败\n"); else { l->next=NULL; printf("初始化成功\n"); } } void insertList(linkList& l,int e,int r) { LNode* p=l; int j=0; while(p&&(j<r-1)) {p=p->next;++j;} if(!p||(j>r-1)) printf("错误\n"); else { LNode* s=new LNode; s->data=e; s->next=p->next; p->next=s; } } int locateList(linkList l,int t,int n) { int i; LNode* p=l->next; for(i=0;i<n;i++) { if(p->data<t) p=p->next; else break; } return i+1; } void addList(linkList &l,int n) { printf("输入元素:"); LNode *tail; tail=new LNode; tail=l; for(int i=0;i<n;i++) { LNode* p; p=new LNode; int t; scanf("%d",&t); int r=locateList(l,t,i); insertList(l,t,r); // p->data=t; // p->next=NULL; // tail->next=p; // tail=p; } } void printList(linkList l) { LNode* p; p=l->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } int numList(linkList l,int t,int m) { int i; LNode* p=l->next; for(i=0;i<m;i++) { if(p->data<t) p=p->next; else if(p->data==t) return i+1; else return 0; } //return 0; } void mergeList(linkList& la,linkList& lb,int n,int m) { LNode* pa=la->next; LNode* pb=lb->next; while(pb!=NULL) { int i=0; int r=locateList(la,(pb->data),n+i); int j=(numList(la,(pb->data),n+i)); printf("r=%d,j=%d,pb=%d\n",r,j,pb->data); if(r!=j) { insertList(la,(pb->data),r); pb=pb->next;i++; } else { pb=pb->next; } } } int main() { linkList la,lb; printf("链表la:"); initList(la); printf("链表lb:"); initList(lb); int n; printf("\nla添加元素个数:"); scanf("%d",&n); addList(la,n); printList(la); int m; printf("\nlb添加元素个数:"); scanf("%d",&m); addList(lb,m); printList(lb); printf("\n合并为递增链表:"); mergeList(la,lb,n,m); printList(la); return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复