下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 顺序表源程序文件

顺序表源程序文件.doc

顺序表源程序文件

Reuben兴伟
2017-12-01 0人阅读 举报 0 0 暂无简介

简介:本文档为《顺序表源程序文件doc》,可适用于高中教育领域

顺序表源程序文件#include<stdioh>#include<stdlibh>#include<malloch>#defineTRUE#defineFALSE#defineOK#defineERROR#defineOVERFLOW#defineElemTypeint**********线性表的动态分配顺序储存结构*************#defineLISTINITSIZE*线性表储存空间的初始分配量*#defineLISTINCREMENT*线性表储存空间的分配增量*typedefintStatustypedefstruct{ElemType*elem*线性表占用的数组空间*intlength*当前长度*intlistsize*当前分配的存储容量*}SqList*构造一个空的线性表算法*StatusInitList(SqList*L){L>elem=(ElemType*)malloc(LISTINITSIZE*sizeof(ElemType))*malloc函数原型void*malloc(unsignedintsize)作用是在内存的动态储存区中分配一个长度为size的连续空间。此函数的值是一个指向分配域起始地址的指针*if(!L>elem){printf("存储空间分配失败~")returnOVERFLOW}L>length=*空表长度为*L>listsize=LISTINITSIZE*初始存储容量*returnOK}*在顺序表L中第i个数据元素之前插入一个元素e。算法*StatusListInsert(SqList*L,inti,ElemTypee){intkSqListnewif((i<)||(i>L>length))*首先判断插入位置是否合法*{printf("插入位置i值不合法")returnERROR}if(L>length>=L>listsize)*当前储存空间已满增加分配*{newelem=(ElemType*)realloc(L>elem,(L>listsizeLISTINCREMENT)*sizeof(ElemType))if(!newelem){printf("存储空间分配失败~")returnOVERFLOW}L>elem=newelemL>listsize=LISTINCREMENT}for(k=L>lengthk>=ik)*为插入元素而移动位置*L>elemk=L>elemkL>elemi=e*在C语言数组中第i个元素的下标为i*L>lengthreturnOK}*删除顺序表中第i个元素算法*StatusListDelete(SqList*L,inti,ElemType*e){*在顺序线性表L中删除第i个元素并用e返回其值。**i的合法值为iLlength。*ElemType*p,*qif(i<||i>L>length)returnERROR*i值不合法*p=(L>elemi)*p为被删除元素的位置**e=*p*被删除元素的值赋给e*q=L>elemL>length*表尾元素的位置*for(pp<=qp)*(p)=*p*被删除元素之后的元素左移*L>length*表长减*returnOK}*定位算法*StatusLocateElem(SqListL,ElemTypee){inti=*i为扫描计数器初值为即从第一个元素开始比较*while((i<Llength)(Lelemi!=e))*顺序扫描表直到找到值为key的元素,或扫描到表尾而没找到*iif(i<=Llength)return(i)*若找到值为e的元素则返回其序号*elsereturn*若没找到则返回空序号*}*输出顺序表中的各个值*voidprintlist(SqListL){intiprintf("顺序表中各元素值为:n")for(i=i<Llengthi)printf("d",Lelemi)printf("n")}*利用数组建立顺序表*voidsetlist(SqList*L){inty,i,jSqListnewprintf("连续输入数据当输入时停止!n")scanf("d",y)while(y!=){L>elemL>length=yL>lengthif(L>length>=L>listsize){newelem=(ElemType*)realloc(L>elem,(L>listsizeLISTINCREMENT)*sizeof(ElemType))*realloc原型:externvoid*realloc(void*memaddress,unsignedintnewsize)功能:改变memaddress所指内存区域的大小为newsize长度。说明:如果重新分配成功则返回指向被分配内存的指针否则返回空指针。*if(!newelem){printf("存储空间分配失败!n")exit()}else{L>elem=newelemL>listsize=L>listsizeLISTINCREMENT}}scanf("d",y)}}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/6

顺序表源程序文件

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利