文档详情

c语言实现顺序表的基本操作.docx

发布:2025-02-16约2.19千字共4页下载文档
文本预览下载声明

c语言实现顺序表的基本操作

顺序表(也称作线性表或数组列表)是一种线性数据结构,它使用一段地址连续的存储单元依次存储线性表的数据元素。在C语言中,我们可以使用数组来实现顺序表,并定义一系列基本操作,如初始化、插入、删除、查找和遍历等。

c代码

#includestdio.h

#includestdlib.h

#defineMAXSIZE100//顺序表的最大长度

#defineSUCCESS1

#defineERROR0

#defineTRUE1

#defineFALSE0

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

typedefintElemType;//ElemType顺序表存储元素的类型

//顺序表结构定义

typedefstruct{

ElemTypedata[MAXSIZE];//存储空间的数组

intlength;//当前长度

}SqList;

//初始化顺序表

StatusInitList(SqList*L){

L-length=0;//空表长度为0

returnSUCCESS;

}

//销毁顺序表(实际上对于静态数组实现的顺序表,这一步可以省略)

StatusDestroyList(SqList*L){

//对于静态数组实现的顺序表,这里实际上什么都不用做

//如果是动态分配的内存,则需要释放内存

returnSUCCESS;

}

//顺序表长度

intListLength(SqListL){

returnL.length;

}

//查找元素(按值查找)

intLocateElem(SqListL,ElemTypee){

for(inti=0;iL.length;i++){

if(L.data[i]==e){

returni+1;//返回位置(第几个元素),注意这里是从1开始计数

}

}

return0;//未找到返回0

}

//插入元素

StatusListInsert(SqList*L,inti,ElemTypee){

if(i1||iL-length+1){

returnERROR;//插入位置不合法

}

if(L-length==MAXSIZE){

returnERROR;//表满

}

for(intk=L-length-1;k=i-1;k--){

L-data[k+1]=L-data[k];//将插入位置及之后的元素后移

}

L-data[i-1]=e;//插入新元素

L-length++;//表长增1

returnSUCCESS;

}

//删除元素

StatusListDelete(SqList*L,inti,ElemType*e){

if(i1||iL-length){

returnERROR;//删除位置不合法

}

*e=L-data[i-1];//将被删除元素赋值给e

for(intk=i;kL-length;k++){

L-data[k-1]=L-data[k];//将删除位置之后的元素前移

}

L-length--;//表长减1

returnSUCCESS;

}

//打印顺序表

voidPrintList(SqListL){

for(inti=0;iL.length;i++){

printf(%d,L.data[i]);

}

printf(\n);

}

intmain(){

SqListL;

InitList(L);

//插入元素

ListInsert(L,1,10);

ListInsert(L,2,20);

ListInsert(L,3,30);

PrintList(L);//输出:102030

//查找元素

intpos=LocateElem(L,20);

if(pos){

printf(Element20foundatposition:%d\n,pos);

}else{

printf(Element20notfound.\n);

}

//删除元素

ElemTypedeletedElem;

ListDelete(L,2,deletedElem);

printf(Deletedelement:%d\n,deletedElem);

PrintList(L);//输出:1

显示全部
相似文档