数据结构中顺序表的基本操作Word文件下载.docx
《数据结构中顺序表的基本操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构中顺序表的基本操作Word文件下载.docx(9页珍藏版)》请在冰点文库上搜索。
![数据结构中顺序表的基本操作Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/745c8d71-4c13-46c8-bd42-ba839e41e478/745c8d71-4c13-46c8-bd42-ba839e41e4781.gif)
StatusInitList(SqList&
L){
//初始化一个顺序表
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!
L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
returnOK;
}//InitSqList
StatusListInsert(SqList&
L,inti,ElemTypee){
//在第i个元素前插入一个新的元素
if(i<
1||i>
++L.length)returnERROR;
if(L.length==L.listsize)
{
ElemType*newbase=(ElemType*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(ElemType));
newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize=LIST_INIT_SIZE+LISTINCREMENT;
//勿忘
}
for(intj=L.length;
j>
=i;
--j)//此处要注意
L.elem[j]=L.elem[j-1];
L.elem[i-1]=e;
}//ListInsert
StatusGetElem(SqListL,inti,ElemType&
e){
//返回顺序表中的第i个元素
1||i>
L.length)returnERROR;
e=L.elem[i-1];
}//GetElem
StatusListDelete(SqList&
L,inti,ElemType&
//删除顺序表中的第i个元素
for(i;
i<
L.length;
i++)
L.elem[i-1]=L.elem[i];
--L.length;
}//ListDelete
StatusPriorElem(SqListL,ElemTypecur_e,ElemType&
pre_e){
//返回一个不是首元素的前驱
inti=2;
if(cur_e==L.elem[0])returnERROR;
while(i<
=L.length&
&
(L.elem[i-1]!
=cur_e))
i++;
if(i==L.length+1)returnERROR;
elsepre_e=L.elem[i-2];
}//PriorElem
StatusNextElem(SqListL,ElemTypecur_e,ElemType&
next_e){
//返回一个不是末元素的后继
inti=1;
L.length&
if(i==L.length)returnERROR;
elsenext_e=L.elem[i];
}//NextElem
StatusListEmpty(SqListL){
//判断顺序表是否为空
returnL.length==0;
}//ListEmpty
StatusListLength(SqListL){
//求顺序表的长度
returnL.length;
}//ListLength
StatusDestroyList(SqList&
//销毁一个顺序表
if(L.elem)
free(L.elem);
L.elem=NULL;
printf("
此顺序表已被销毁。
"
);
}//DestroyList
StatusClearList(SqList&
//清空一个顺序表
}//ClearList
StatusListPrint(SqList&
L)
{
顺序表为:
if(ListEmpty(L))
空。
\n"
returnERROR;
for(inti=0;
i<
++i)
%-4d"
L.elem[i]);
}
voidmain()
SqListL;
ElemTypea,b,c,d,e,f,pre_e,next_e;
inti,j,k,l,m,menu;
charp,q,r,s;
intis_stop_;
InitList(L);
is_stop_=FALSE;
while(!
is_stop_)
printf(
"
1.添加元素2.查看指定位置的元素\n"
3.删除元素4.查找元素前驱\n"
5.查找元素后继6.检查是否为空\n"
7.列出所有元素8.查看列表长度\n"
9.清空表10.释放列表内存并退出\n"
11.退出\n"
);
请选择,执行以上操作:
scanf("
%d"
&
menu);
switch(menu)
//"
1.添加元素;
case1:
请输入你想创建的顺序表中元素的个数:
i);
1)printf("
您输入的值有误,无法创建顺序表。
else
{
printf("
请您依次输入您想创建的顺序表的元素:
for(j=1;
j<
j++)
{
a);
ListInsert(L,L.length+1,a);
}
}
ListPrint(L);
break;
2.查看指定位置的元素\n"
case2:
请输入您想获取的元素的位序:
k);
if(GetElem(L,k,b))printf("
获得的元素为:
%d\n"
b);
elseprintf("
您输入的值有误,无法获取元素。
3.删除元素\n"
case3:
请输入您想删除的元素的位序:
l);
if(ListDelete(L,l,c))
删除的元素为:
c);
删除元素后的顺序表为:
您输入的值有误,无法删除元素。
4.查找元素前驱\n"
case4:
您想返回那个元素的前驱?
d);
if(PriorElem(L,d,pre_e))printf("
元素%d的前驱为%d\n"
d,pre_e);
您输入的值有误,无法返回前驱。
5.查找元素后继\n"
case5:
您想返回那个元素的后继?
e);
if(NextElem(L,e,next_e))printf("
元素%d的后继为%d\n"
e,next_e);
您输入的值有误,无法返回后继。
6.检查是否为空\n"
case6:
if(ListEmpty(L))printf("
此顺序表为空。
此顺序表不为空。
7.列出所有元素\n"
case7:
8.查看列表长度\n"
case8:
此顺序表的长度为:
%d\n"
ListLength(L));
9.清空表\n"
case9:
ClearList(L);
顺序表已清空。
10.释放列表内存\n"
case10:
DestroyList(L);
is_stop_=TRUE;
case11: