欢迎来到天天文库
浏览记录
ID:12130969
大小:187.50 KB
页数:43页
时间:2018-07-15
《数据结构c语言实现系列[1]——线性表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构C语言实现系列[1]——线性表[1]#include#includetypedefintelemType;/************************************************************************//* 以下是关于线性表顺序存储操作的16种算法 *//**********************************************************************
2、**/structList{ elemType*list; intsize; intmaxSize;};voidagainMalloc(structList*L){ /*空间扩展为原来的2倍,并由p指针所指向,原内容被自动拷贝到p所指向的存储空间*/ elemType*p=realloc(L->list,2*L->maxSize*sizeof(elemType)); if(!p){ /*分配失败则退出运行*/ printf("存储空间分配失败!"); exit(1); } L
3、->list=p; /*使list指向新线性表空间*/ L->maxSize=2*L->maxSize; /*把线性表空间大小修改为新的长度*/}/*1.初始化线性表L,即进行动态存储空间分配并置L为一个空表*/voidinitList(structList*L,intms){ /*检查ms是否有效,若无效的则退出运行*/ if(ms<=0){ printf("MaxSize非法!"); exit(1); /*执行此函数中止程序运行,此函数在stdlib.h中有定义*/ } L->maxS
4、ize=ms; /*设置线性表空间大小为ms*/ L->size=0; L->list=malloc(ms*sizeof(elemType)); if(!L->list){ printf("空间分配失败!"); exit(1); } return;}/*2.清除线性表L中的所有元素,释放存储空间,使之成为一个空表*/voidclearList(structList*L){ if(L->list!=NULL){ free(L->list); L->list=0;
5、 L->size=L->maxSize=0; } return;}/*3.返回线性表L当前的长度,若L为空则返回0*/intsizeList(structList*L){ returnL->size;}/*4.判断线性表L是否为空,若为空则返回1,否则返回0*/intemptyList(structList*L){ if(L->size==0){ return1; } else{ return0; }}/*5.返回线性表L中第pos个元素的值,若pos超出范围,则停止程序运行*/elemT
6、ypegetElem(structList*L,intpos){ if(pos<1
7、
8、pos>L->size){ /*若pos越界则退出运行*/ printf("元素序号越界!"); exit(1); } returnL->list[pos-1]; /*返回线性表中序号为pos值的元素值*/}/*6.顺序扫描(即遍历)输出线性表L中的每个元素*/voidtraverseList(structList*L){ inti; for(i=0;isize;i++){ printf(
9、"%d",L->list[i]); } printf(""); return;}/*7.从线性表L中查找值与x相等的元素,若查找成功则返回其位置,否则返回-1*/intfindList(structList*L,elemTypex){ inti; for(i=0;isize;i++){ if(L->list[i]==x){ returni; } } return-1;}/*8.把线性表L中第pos个元素的值修改为x的值,若修改成功返回1,否则返回0*/intupda
10、tePos
此文档下载收益归作者所有