数据结构线性表顺序存储程序和算法

#include<stdio.h>#include<stdlib.h>#defineMaxlen100#defineERROR0#defineSUCCESS1#defineAPPFIAL2typedefintStatus;typedefintElemType;typedefstructList{ElemType*elem;//空间的首地址名例如:ElemTypeintn;//n表示数组里实际存放的元素个数intlistsize;//实际分配的空间个数}List;////////////////////////////////////////////////////////算法名称:create//输入:表头//输出:创建成功或失败的结果//功能描述:创建一个动态分配存储空间的线性表////////////////////////////////////////////////////////第一步:向操作系统申请空间,其大小为Maxlen空间的首地址名=(类型*)malloc(需要的空间个数*sizeof(类型));//第二步:判断空间是否申请成功if(空间的首地址名==NULL)returnERROR//如果申请失败返回申请不成功//否则继续//第三步:记录实际分配的空间个数到listsize变量listsize=实际分配的空间个数//第四步:记录实际存放的元素个数n为零n=0;//第五步:返回创建成功returnSUCCESS////////////////////////////////////////////////////////这里写输出部分create(这里写输入部分){Statuscreate(List*l){inti;l->elem=(ElemType*)malloc(Maxlen*sizeof(ElemType));if(l->elem==NULL)returnERROR;l->listsize=Maxlen;l->n=10;printf("\n空间申请成功");for(i=0;i<10;i++)*(l->elem+i)=i;return(SUCCESS);}////////////////////////////////////////////////////////算法名称:detroy---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---//输入:表头//输出:无//功能描述:销毁一个动态分配存储空间的线性表////////////////////////////////////////////////////////第一步:释放空间free(L.elem);//////////////////////////////////////////////////////voiddestroy(List*l){free(l->elem);printf("\n空间释放成功");}//实现增加、删除、修改、查询操作////////////////////////////////////////////////////////算法名称:add//输入:表L,增加位置//输出:增加成功或失败//功能描述:在线性表L中增加学生信息e////////////////////////////////////////////////////////第一步:判断i的位置是否合法,不合法返回失败//第二步:判断当前的存储空间是否已满,如果已满,增加分配//第三步:判断增加的存储空间是否申请成功,如果申请失败,返回申请不成功//第四步:找到插入的位置,将之后的元素依次下移////////////////////////////////////////////////////////中间插入:/*若插入成功返回1,否则返回0*//*若插入成功返回1,否则返回0*///中间插入intinsert(structList*L,inte,ElemTypex){inti;if(e<1||e>L->n+1){/*若e越界则插入失败*/return0;}if(L->n==L->listsize){/*重新分配更大的存储空间*/againMalloc(L);}for(i=L->n-1;i>=e-1;i--){L->elem[i+1]=L->elem[i];}L->elem[e-1]=x;L->n++;return1;}//算法名称:del//输入:表L,删除位置i//输出:删除成功或失败//功能描述:在线性表L中删除位置为i的那个元素//第一步:判断是否空表,如果是空表返回删除失败---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---//第二步:判断位置i是否合法,如果非法返回删除失败Statusdel(List*l,inti){intj;if(l->listsize==l->n)return(ERROR);if(i<0||(i>l->n-1))return(ERROR);for(j=i;j<l->n-1;j++)*(l->elem+j)=*(l->elem+j+1);l->n--;return(SUCCESS);}//查找/*从线性表L中查找值与x相等的元素,若查找成功则返回其位置,否则返回-1*/intsearch(structList*L,ElemTypex){inti;for(i=0;i<L->n;i++){if(L->elem[i]==x){returni;}}return-1;}//修改:/*把线性表L中第i个元素的值修改为x的值,若修改成功返回1,否则返回0*/intupdatePosList(structList*L,inti,ElemTypex){if(i<1||i>L->n){/*若pos越界则修改失败*/return0;}L->elem[i-1]=x;return1;}//////////////////////////////////////////////测试函数voidmain(){ListL;inti;if(create(L)==APPFIAL){printf("操作系统没有足够空间!");exit(-1);}printf("\n删...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?