#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二级辅导-统计字符 (C语言代码)浏览:506 |
奖学金 (C++代码)浏览:2009 |
弟弟的作业 (C++代码)浏览:1306 |
【蟠桃记】 (C语言代码)浏览:652 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:695 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1420 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:472 |
C语言训练-数字母 (C语言代码)浏览:650 |
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:677 |
【计算直线的交点数】 (C语言代码)浏览:1456 |