数据结构工程上什么时候用顺序结构 什么时候用链式结构
1个回答
推荐于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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询