#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#defineLIST_INIT_SIZE10//线性表存储空间的初始分配量
#defineLISTINCREMENT2//线性表存储空间的分配增量
structSqList
{
int*elem;//存储空间基址
intlength;//当前长度
intlistsize;//当前分配的存储容量(以sizeof(int)为单位)
};
voidInitList(SqList&L)
{//操作结果:构造一个空的顺序线性表
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)
exit(0);//存储分配失败
L.length=0;//空表长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
}
intListInsert(SqList&L,inti,inte)
{//初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
int*newbase,*q,*p;
if(i<1||i>L.length+1)//i值不合法
return0;
if(L.length>=L.listsize)//当前存储空间已满,增加分配
{
if(!(newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int))))
exit(0);//存储分配失败
L.elem=newbase;//新基址
L.listsize+=LISTINCREMENT;//增加存储容量
}
q=L.elem+i-1;//q为插入位置
for(p=L.elem+L.length-1;p>=q;--p)//插入位置及之后的元素右移
*(p+1)=*p;
*q=e;//插入e
++L.length;//表长增1
return1;
}
voidPrint(SqList&L)
{
inti;
for(i=0;i<L.length;i++)
printf("%d",*(L.elem+i));
printf("n");
}
————————————————————————————————————
//函数①
voidMergeList1(SqListLa,SqListLb,SqList&Lc)
{
int*pa,*pa_last,*pb,*pb_last,*pc;
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;//不用InitList()创建空表Lc
pc=Lc.elem=(int*)malloc(Lc.listsize*sizeof(int));
if(!Lc.elem)//存储分配失败
exit(0);
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<=pa_last&&pb<=pb_last)//表La和表Lb均非空
{//归并
if(*pa<*pb)
*pc++=*pa++;
elseif(*pa>*pb)
*pc++=*pb++;
else{
*pc++=*pa++;
pb++;
Lc.length--;
}
}
while(pa<=pa_last)//表La非空且表Lb空
*pc++=*pa++;//插入La的剩余元素
while(pb<=pb_last)//表Lb非空且表La空
*pc++=*pb++;//插入Lb的剩余元素
}
————————————————————————————————————
//函数②
voidMergeList2(SqListLa,SqList&Lb,SqList&Lc)
{
int*pa,*pa_last,*pb,*pb_last,*pc;
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;//不用InitList()创建空表Lc
pc=Lc.elem=(int*)malloc(Lc.listsize*sizeof(int));
if(!Lc.elem)//存储分配失败
exit(0);
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<=pa_last&&pb<=pb_last)//表La和表Lb均非空
{//归并
if(*pa<=*pb)
*pc++=*pa++;
else
*pc++=*pb++;
}
while(pa<=pa_last)//表La非空且表Lb空
*pc++=*pa++;//插入La的剩余元素
while(pb<=pb_last)//表Lb非空且表La空
*pc++=*pb++;//插入Lb的剩余元素
Lb.length=Lc.length;
Lb=Lc;
}
————————————————————————————————————
//函数③
voidInverse(SqList&L){
inti,t;
for(i=0;i<L.length/2;i++)
{
t=*(L.elem+i);
*(L.elem+i)=*(L.elem+L.length-i-1);
*(L.elem+L.length-i-1)=t;
}
}
voidmain(){
SqListLA,LB,LC;
inta[4]={3,5,8,11},b[7]={2,6,8,9,11,15,20};
inti;
InitList(LA);
InitList(LB);
InitList(LC);
for(i=0;i<4;i++)
ListInsert(LA,i+1,a[i]);
for(i=0;i<7;i++)
ListInsert(LB,i+1,b[i]);
printf("LA=");
Print(LA);
printf("LB=");
Print(LB);
printf("n");
MergeList1(LA,LB,LC);
printf("①LC=");
Print(LC);
printf("n");
MergeList2(LA,LB,LC);
printf("②LB=");
Print(LB);
printf("n");
printf("③LC=");
Inverse(LC);
Print(LC);
}
-
努比亚z9max手机音乐效验
该机拥有HIFI级音乐芯片,音乐效果不凡。具体体现在:1.音量调节,正常听音乐中高低音都是一个音量,而杜比音效能动态扩大某个音量。比如放打鼓声,杜比会及时提高低音加强鼓声。2.加强音域,杜比音效有开阔、集中、…
-
是atChristmas还是inChristmas
此处该用“on”。在圣诞节正确表达应为 “on Christmas ”。有具体日期的,比如知道几月几日的都用“on” ;不知道日期,但知道年份和月份的用“in” ,知道具体时间,比如几点几分用“at”。…
-
个体工商户应交纳什么税
纳税标准根据国家税务总局《个体工商户定期定额征收管理办法》文件精神 ,定期定额征收方式适用的税种及税率如下:1、根据《中华人民共和国增值税暂行条例》规定,自2009年1月1日起,小规模纳税人增值税征收率为3%…
-
材料成本差异率为负数是什么意思
材料成本差异额,是指材料的实际成本和计划成本之间的差额。差异率负数表示节约差异,即实际成本比计划成本小。正数表示超支差异,即实际成本比计划成本大。…
-
塞翁失马焉知非福是什么意思
比喻一时虽然受到损失,反而因此能得到好处。也指坏事在一定条件下可变为好事,反之亦然。形容人的心态,一定要乐观向上,任何事情都有二面性,不好的一面,有可能向好的一面转化。塞翁失马,焉知非福出自《 淮南子…