#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论