数据结构工程上什么时候用顺序结构 什么时候用链式结构

 我来答
匿名用户
推荐于2016-08-07
展开全部
#include<stdio.h>
//生成两个链表,然后按逆序合并 
//曾经帮别人做的,
 
typedef struct link
{
  int num;
  struct link * next; 
}LINK,*Link;
Link addlink(Link * link,int i,int where)
{
   Link tmp=(Link)malloc(sizeof(LINK)),next;
   tmp->num=i;   
   if(where==0)//after
   {  (*link)->next=tmp; 
   tmp->next=NULL;
  }
  if(where==1)//before
  {        
   tmp->next=(*link);
  }
  return tmp;
 }
void initfirst(Link * link)
{
   (*link)=(Link)malloc(sizeof(LINK));
   (*link)->num=0;
   (*link)->next=NULL;
 }
Link initlink()
{
   Link  tmp, tmp1,tmp2;
   initfirst(&tmp);
   int i=0,num=0,num1=0;
   printf("\n请输入数字的个数,然后输入各个数字,请安递增排列:");
  scanf("%d",&num); 
  tmp1=tmp;
      for(;i<num;i++){
          scanf("%d",&num1);
     if(i==0)
     {
     tmp->num=num1;
     continue;
    }

      tmp1=addlink(&tmp1,num1,0);
     
    }
  return tmp;
   
}
void putlink(Link link)
{
   Link tmp=link;
   while(tmp!=NULL)
   {
   printf("%d->",tmp->num);
   tmp=tmp->next;
   }
    
 }
 Link joinlink(Link la,Link lb)
 {
     Link tmp,tmp1,tmp2,*lc;
     initfirst(&tmp);
     tmp1=tmp;
     int i=0,min=0;
     while(la!=NULL&&lb!=NULL)
     {
     if(la->num>lb->num)
     {lc=&lb;
     min=lb->num;}
     else
     {lc=&la;
     min=la->num;
     }
       if(i==0)
     {
     tmp->num=min;
     tmp=tmp->next;
      i++;
      
    }
    else
   { tmp=addlink(&tmp,(*lc)->num,1);
       (*lc)=(*lc)->next;
    }
    
    }
    while(la!=NULL)
    {
    tmp=addlink(&tmp,la->num,1);
       la=la->next;
    }
      while(lb!=NULL)
    {
    tmp=addlink(&tmp,lb->num,1);
       lb=lb->next;
    }
 tmp1=NULL;
  return tmp;  
}
int main()
{
   Link la,lb,lc;
   printf("初始化LA:");
   la=initlink();
   printf("\nLa=");putlink(la);
   printf("\n初始化LB:");
  lb= initlink();

 printf("\nLb=");
  putlink(lb);
  lc=joinlink(la,lb);
   printf("\nLc=");
 putlink(lc);
  system("pause > nul");
  return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式