#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 条评论

暂无评论