栗子


私信TA

用户名:dotcpp0729093

访问量:541

签 名:

believe or not

等  级
排  名 641
经  验 4069
参赛次数 0
文章发表 14
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

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

  评论区

  • «
  • »