includeWord文件下载.docx

上传人:b****6 文档编号:19234252 上传时间:2023-01-04 格式:DOCX 页数:11 大小:17.25KB
下载 相关 举报
includeWord文件下载.docx_第1页
第1页 / 共11页
includeWord文件下载.docx_第2页
第2页 / 共11页
includeWord文件下载.docx_第3页
第3页 / 共11页
includeWord文件下载.docx_第4页
第4页 / 共11页
includeWord文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

includeWord文件下载.docx

《includeWord文件下载.docx》由会员分享,可在线阅读,更多相关《includeWord文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

includeWord文件下载.docx

typedefintStatus;

/*Status是函数的类型,其值是函数结果状态代码,如OK等*/

typedefintBoolean;

/*Boolean是布尔类型,其值是TRUE或FALSE*/

typedefintElemType;

typedefstruct

{

ElemType*elem;

/*存储空间基址*/

intlength;

/*当前长度*/

intlistsize;

/*当前分配的存储容量(以sizeof(ElemType)为单位)*/

}SqList;

Statusequal(ElemTypec1,ElemTypec2)

{/*判断是否相等的函数*/

if(c1==c2)

returnTRUE;

else

returnFALSE;

}

intcomp(ElemTypea,ElemTypeb)

{/*根据a<

、=或>

b,分别返回-1、0或1*/

if(a==b)

return0;

return(a-b)/abs(a-b);

voidprint(ElemTypec)

printf("

%d"

c);

voidprint2(ElemTypec)

%c"

voidprint1(ElemType*c)

*c);

voidInitList(SqList*L)/*算法2.3*/

{/*操作结果:

构造一个空的顺序线性表L*/

(*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!

(*L).elem)

exit(OVERFLOW);

/*存储分配失败*/

(*L).length=0;

/*空表长度为0*/

(*L).listsize=LIST_INIT_SIZE;

/*初始存储容量*/

voidDestroyList(SqList*L)

{/*初始条件:

顺序线性表L已存在。

操作结果:

销毁顺序线性表L*/

free((*L).elem);

(*L).elem=NULL;

(*L).listsize=0;

voidClearList(SqList*L)

将L重置为空表*/

StatusListEmpty(SqListL)

若L为空表,则返回TRUE,否则返回FALSE*/

if(L.length==0)

intListLength(SqListL)

返回L中数据元素个数*/

returnL.length;

StatusGetElem(SqListL,inti,ElemType*e)

顺序线性表L已存在,1≤i≤ListLength(L)。

用e返回L中第i个数据元素的值*/

if(i<

1||i>

L.length)

returnERROR;

*e=*(L.elem+i-1);

returnOK;

intLocateElem(SqListL,ElemTypee,Status(*compare)(ElemType,ElemType))

顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)*/

/*操作结果:

返回L中第1个与e满足关系compare()的数据元素的位序。

*/

/*若这样的数据元素不存在,则返回值为0。

算法2.6*/

ElemType*p;

inti=1;

/*i的初值为第1个元素的位序*/

p=L.elem;

/*p的初值为第1个元素的存储位置*/

while(i<

=L.length&

&

!

compare(*p++,e))

++i;

=L.length)

returni;

StatusPriorElem(SqListL,ElemTypecur_e,ElemType*pre_e)

顺序线性表L已存在*/

若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,*/

/*否则操作失败,pre_e无定义*/

inti=2;

ElemType*p=L.elem+1;

*p!

=cur_e)

p++;

i++;

if(i>

returnINFEASIBLE;

/*操作失败*/

*pre_e=*--p;

StatusNextElem(SqListL,ElemTypecur_e,ElemType*next_e)

若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,*/

/*否则操作失败,next_e无定义*/

ElemType*p=L.elem;

L.length&

if(i==L.length)

*next_e=*++p;

StatusListInsert(SqList*L,inti,ElemTypee)/*算法2.4*/

顺序线性表L已存在,1≤i≤ListLength(L)+1*/

在L中第i个位置之前插入新的数据元素e,L的长度加1*/

ElemType*newbase,*q,*p;

(*L).length+1)/*i值不合法*/

if((*L).length>

=(*L).listsize)/*当前存储空间已满,增加分配*/

newbase=(ElemType*)realloc((*L).elem,((*L).listsize+LIST_INCREMENT)*sizeof(ElemType));

newbase)

(*L).elem=newbase;

/*新基址*/

(*L).listsize+=LIST_INCREMENT;

/*增加存储容量*/

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*/

StatusListDelete(SqList*L,inti,ElemType*e)/*算法2.5*/

顺序线性表L已存在,1≤i≤ListLength(L)*/

删除L的第i个数据元素,并用e返回其值,L的长度减1*/

ElemType*p,*q;

(*L).length)/*i值不合法*/

p=(*L).elem+i-1;

/*p为被删除元素的位置*/

*e=*p;

/*被删除元素的值赋给e*/

q=(*L).elem+(*L).length-1;

/*表尾元素的位置*/

for(++p;

p<

++p)/*被删除元素之后的元素左移*/

*(p-1)=*p;

(*L).length--;

/*表长减1*/

voidListTraverse(SqListL,void(*vi)(ElemType*))

依次对L的每个数据元素调用函数vi()*/

/*vi()的形参加'

'

,表明可通过调用vi()改变元素的值*/

inti;

for(i=1;

i<

=L.length;

i++)

vi(p++);

\n"

);

main()

{

SqListL;

ElemTypee,e0;

Statusi;

intj,k;

InitList(&

L);

初始化L后:

L.elem=%uL.length=%dL.listsize=%d\n"

L.elem,L.length,L.listsize);

按任意键继续...\n"

getch();

for(j=1;

j<

=5;

j++)

i=ListInsert(&

L,1,j);

在L的表头依次插入1~5后:

*L.elem="

*(L.elem+j-1));

L.elem=%uL.length=%dL.listsize=%d"

i=ListEmpty(L);

L是否空:

i=%d(1:

是0:

否)\n"

i);

ClearList(&

清空L后:

=10;

ListInsert(&

L,j,j);

在L的表尾依次插入1~10后:

L,1,0);

在L的表头插入0后:

=ListLength(L);

j++)/*ListLength(L)为元素个数*/

L.elem=%u(有可能改变)L.length=%d(改变)L.listsize=%d(改变)\n"

GetElem(L,5,&

e);

第5个元素的值为:

%d\n"

e);

for(j=10;

=11;

k=LocateElem(L,j,equal);

if(k)/*k不为0,表明有符合条件的元素,且其位序为k*/

第%d个元素的值为%d\n"

k,j);

没有值为%d的元素\n"

j);

=2;

j++)/*测试头两个数据*/

GetElem(L,j,&

e0);

/*把第j个数据赋给e0*/

i=PriorElem(L,e0,&

/*求e0的前驱*/

if(i==INFEASIBLE)

元素%d无前驱\n"

e0);

元素%d的前驱为:

e0,e);

for(j=ListLength(L)-1;

j++)/*最后两个数据*/

i=NextElem(L,e0,&

/*求e0的后继*/

元素%d无后继\n"

元素%d的后继为:

k=ListLength(L);

/*k为表长*/

for(j=k+1;

j>

=k;

j--)

i=ListDelete(&

L,j,&

/*删除第j个数据*/

if(i==ERROR)

删除第%d个元素失败\n"

删除第%d个元素成功,其值为:

j,e);

依次输出L的元素:

"

ListTraverse(L,print1);

/*依次对元素调用print1(),输出元素的值*/

DestroyList(&

销毁L后:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1