实验1顺序表基本操作.docx
- 文档编号:3042498
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:13
- 大小:55.27KB
实验1顺序表基本操作.docx
《实验1顺序表基本操作.docx》由会员分享,可在线阅读,更多相关《实验1顺序表基本操作.docx(13页珍藏版)》请在冰豆网上搜索。
实验1顺序表基本操作
实验1顺序表基本操作
实验目的
1.熟悉C语言的上机环境,掌握C语言的基本结构。
2.会定义线性表的顺序存储结构。
3.熟悉对顺序表的一些基本操作和具体的函数定义。
注意事项
在做第一次“数据结构”课程实验之前,要在硬盘上建立好自己的工作目录,专门来存储你所做的实验程序及相关信息,以后每次做实验都采用这个目录。
实验内容
该程序的功能是对元素类型为整型的顺序表进行一些操作。
该程序包括顺序表结构类型的定义以及对顺序表操作的具体的函数定义和主函数。
/*定义DataType为int类型*/
typedefintDataType;
/*顺序表存储空间的总分配量*/
#defineMAXSIZE100
/*顺序存储类型*/
typedefstruct
{DataTypedata[MAXSIZE];/*存放线性表的数组*/
intlength;/*length是顺序表的长度*/
}SeqList;
/*初始化顺序表*/
SeqListSeqListInit()
/*清空顺序表*/
voidListClear(SeqListL)
/*求顺序表长度*/
intListLength(SeqListL)
/*检查顺序表是否为空*/
intListEmpty(SeqListL)
/*检查顺序表是否为满*/
intListFull(SeqListL)
/*遍历顺序表*/
voidListTraverse(SeqListL)
/*从顺序表中查找元素*/
DataTypeListGet(SeqListL,inti)
/*从顺序表中查找与给定元素值相同的元素在顺序表中的位置*/
intListLocate(SeqListL,DataTypex)
/*向顺序表中插入元素*/
voidListInsert(SeqListL,inti,DataTypex)
/*从顺序表中删除元素*/
voidListDelete(SeqListL,inti)
/*求顺序表中元素的前驱*/
DataTypeListPrior(SeqListL,DataTypee)
/*求顺序表中元素的后继*/
DataTypeListNext(SeqListL,DataTypee)
实验2单链表的实验内容和要求完全类似,实验参考程序见参考程序2
#include
/*定义ElemType为int类型*/
typedefintElemType;
/*顺序表存储空间的总分配量*/
#defineMAXSIZE100
#defineFALSE0
#defineTRUE1
/*顺序存储类型*/
typedefstruct
{ElemTypedata[MAXSIZE];/*存放线性表的数组*/
intlength;/*length是顺序表的长度*/
}SeqList;
/*初始化顺序表*/
SeqListSeqListInit()
{SeqListL;
L.length=0;
returnL;
}
/*清空顺序表*/
SeqListListClear(SeqListL)
{L.length=0;
returnL;
}
/*求顺序表长度*/
intListLength(SeqListL)
{return(L.length);}
/*检查顺序表是否为空*/
intListEmpty(SeqListL)
{if(L.length)return(FALSE);
elsereturn(TRUE);
}
/*检查顺序表是否为满*/
intListFull(SeqListL)
{if(L.length==MAXSIZE)return(TRUE);
elsereturn(FALSE);
}
/*遍历顺序表*/
voidListTraverse(SeqListL)
{inti;
if(L.length<=0)printf("顺序表为空\n");
else{printf("当前顺序表中的元素为:
\n");
for(i=1;i<=L.length;i++)printf("%d",L.data[i-1]);
printf("\n");
}
}
/*从顺序表中查找元素*/
ElemTypeListGet(SeqListL,inti)
{ElemTypee;
e=L.data[i-1];return(e);
}
/*从顺序表中查找与给定元素值相同的元素在顺序表中的位置*/
intListLocate(SeqListL,ElemTypex)
{inti=0;
while(i =x) i++; if(i elsereturn0; } /*向顺序表中插入元素*/ SeqListListInsert(SeqListL,inti,ElemTypex) {intj; if(L.length==MAXSIZE) printf("表满,不能插入\n"); elseif(i<1||i>L.length+1) printf("插入位置不正确\n"); else{for(j=L.length-1;j>=i-1;j--) L.data[j+1]=L.data[j]; L.data[i-1]=x; L.length++; } returnL; } /*从顺序表中删除元素*/ SeqListListDelete(SeqListL,inti) {intj;ElemTypex; if(i<1||i>L.length) printf("删除位置不正确\n"); else{x=L.data[i-1]; for(j=i;j<=L.length-1;j++) L.data[j-1]=L.data[j]; L.length--; printf("%d已被删除\n",x); } returnL; } /*求顺序表中元素的前驱*/ ElemTypeSeqListPrior(SeqListL,ElemTypee) {inti=0; while(i =e) i++; if(i==0){printf("第一个元素没有前驱\n");return0;} elseif(i<=L.length-1)return(L.data[i-1]); else{printf("不存在值为%d的元素\n",e);return0;} } /*求顺序表中元素的后继*/ ElemTypeSeqListNext(SeqListL,ElemTypee) {inti=0; while(i =e) i++; if(i==L.length-1){printf("最后一个元素没有后继\n");return0;} elseif(i else{printf("不存在值为%d的元素\n",e);return0;} } intscan() {intd; printf("请选择所要进行的操作\n"); printf("1.初始化2.清空3.求顺序表长度4.检查顺序表是否为空\n"); printf("5.检查顺序表是否为满6.遍历顺序表7.从顺序表中查找元素\n"); printf("8.从顺序表中查找与给定元素值相同的元素在顺序表中的位置\n"); printf("9.向顺序表中插入元素10.从顺序表中删除元素\n"); printf("11.求元素的前驱12.求元素的后继\n"); printf("其他键退出......\n"); scanf("%d",&d); return(d); } main() {intquit=0; inti,location; ElemTypee,prior,next; SeqListL; printf("第一次操作需选择初始化\n"); while(! quit) switch(scan()) {case1: L=SeqListInit();break; case2: ListClear(L);break; case3: printf("顺序表的长度为%d\n",ListLength(L));break; case4: if(ListEmpty(L))printf("顺序表为空\n");elseprintf("顺序表不为空\n");break; case5: if(ListFull(L))printf("顺序表满\n");elseprintf("顺序表不满\n");break; case6: ListTraverse(L); break; case7: printf("请输入要查找的元素的位置\n"); scanf("%d",&i); if(L.length==0)printf("顺序表已空\n"); elseif(i<=0||i>L.length)printf("查找的位置不正确\n"); else printf("顺序表中第%d个元素的值为: %d\n",i,ListGet(L,i)); break; case8: printf("请输入要查找的元素的值\n"); scanf("%d",&e); if(L.length==0)printf("顺序表已空\n"); else {location=ListLocate(L,e); if(location==0)printf("顺序表中不存在值为%d的元素\n",e); elseprintf("顺序表中%d的位置是: %d\n",e,ListLocate(L,e)); } break; case9: printf("请输入要插入的元素的位置和其值: \n"); scanf("%d%d",&i,&e); L=ListInsert(L,i,e); break; case10: printf("请输入要删除的元素的位置: \n"); scanf("%d",&i); L=ListDelete(L,i); break; case11: scanf("%d",&e); prior=SeqListPrior(L,e); if(prior)printf("%d的前驱是: %d\n",e,prior);break; case12: scanf("%d",&e); next=SeqListNext(L,e); if(next)printf("%d的后继是: %d\n",e,next);break; default: quit=1;} return0; } #include #include /*定义ElemType为int类型*/ typedefintElemType; #define
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验1 顺序表基本操作 实验 顺序 基本 操作