#include<stdio.h>
#include<stdlib.h>
typedefintelemType;
/************************************************************************/
/* 以下是关于线性表顺序存储操作的16种算法 */
/************************************************************************/
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->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->maxSize=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;
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超出范围,则停止程序运行*/
elemTypegetElem(structList*L,intpos)
{
if(pos<1
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!