1实验-顺序表顺序存储

1实验-顺序表顺序存储

ID:42465756

大小:48.50 KB

页数:7页

时间:2019-09-15

上传者:U-7604
1实验-顺序表顺序存储_第1页
1实验-顺序表顺序存储_第2页
1实验-顺序表顺序存储_第3页
1实验-顺序表顺序存储_第4页
1实验-顺序表顺序存储_第5页
资源描述:

《1实验-顺序表顺序存储》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

实验一线性表(顺序结构)—、实验目的1.掌握实现线性表的基本操作方法;2.掌握线性表的基本操作:建表、插入、删除、输出等运算在顺序存储结构的实现;3.通过本次实习加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。熟悉线性表的棊木运算在两种存储结构(顺序结构和链式结构)上的实现。二、实验内容线性表的基本操作:建表、插入、删除、输出等运算在顺序存储结构的实现;三、实验代码/咅00:基本信息定义*/#include"stdio.h"#include"malloc.h"#defineSUCCESS1#defineFAILURE0#dcfincnull0#definemaxsize100typedefintdatatype;typedefstruct/*定义线性表(顺序结构)数据类型*/{datatypedatafmaxsize];intlast;[sequenlist;intn;/*定义功能选择菜单函数引voidprint(){piintf(”・・・■线性表(顺序结构)的基本操作・・・An”);printf(H开始 “);)/*打印线性表(顺序结构)*/voidprintout(sequenlist*L){inti;for(i=1;i<=L->last;i++)printfC'[%d]”,i);printf(H n);for(i=l;i<=L->last;i++) printf(u%6du,L->data[i]);printf(H n);/*01线性表(顺序结构)的初始化*/intlnitList(sequenlist*L){L=(scqucnlist*)malloc(sizeof(sequenlist));if(!L){returnFAILURE;elseL->last=-1;returnSUCCESS;/*02创建线性表(顺序结构)*/voidcreatlist(sequenlist*L){inti;inttmp;printfC1请输入线性表中数据的个数:”);scanf(”%d",&n);for(i=1;i<=n;i++){printf("data[%dj=",i);fflush(stdin);/*清除掉键盘缓冲区*/scanf("%d”,&tmp);L->data[i]=tmp;}L->last=n;}/*03在第i个结点前插入元素x(note:元素从1始计数)*/intinscrt(scqucnlist*L,datatypex,inti){intj;讦(L->last==maxsize)/*如果原线性表(顺序结构)己经满了*/{printf(”线性表(顺序结构)已满 “);return0;}elseif((iL->last+1))/*如果输入的i值超岀范围引{printfC*错了,请输入正确的丫值 “);return0;else{for(j=L->last;j>=i;j-)/*从笫i个元素起,每个元素后移一位*/L->data[j+l]=L->data[jJ; L->data[i]=x;L->last=L->last+1;}return(l);}/*04删除第i个结点,note:元素从0始计数*/intdellist(sequenlist*L,inti){if((iL->last))/*如果输入的i值超出范围*/{printf(“错了,请输入正确的丫值 ”);return0;}else{for(;ilast;i++)/*从第i+1个元素起,每个元素前移一位*/L->data[i]=L->data[i+1J;L・>last=L・>last・1;rcturn(l);}}/*05求线性表(顺序结构)的长度勺intCountList(sequenlist*L){returnL->last;}/*06清空线性表(顺序结构)*/voidClearList(sequenlist*L){L->last=-1;}/*07判断线性表(顺序结构)是否为空引/*boolListIsEmpty(sequenlist*L){returnL->last==-1;}*//*08按位直取线性表(顺序结构)屮元索*/datatypeGetElem(sequenlist*L,intpos){if((L->last==-1)||(pos<1)||(pos>L->last))/*表为空或者位置不对*/{printf(n线性表为空,或者输入的位置有错!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函数犁 intLocateList(sequenlist*L,datatypevalue){inti=0;if(L->last==-1)/*表为空*/{printfC线性表为空”);return-1;}/咅查找元索Ffor(i=1;i<=L->last;i++){if(value==L->data[iJ){break;}}/*没有找到元索*/if(i>L->last){return-1;}returni;}/*1()附加操作函数*/voidAppendList(sequenlist*L,datatypeitem){if(L->last==maxsize)/*表已满*/{printfC线性表已满,不能附加新数据!E);}else{L->dataL++L->lastJ=item;}}〃主驱动函数main(){sequenlist*L;intemd;intx,i;print();L=(sequenlist*)malloc(sizeof(sequenlist));/*指针在使用前一定要初始化*/doprintf(H n); printf(ul……初始化 “);printf(u2……创建线性表(顺序结构) u);printf(u3插入 “);printf(u4......删除 “);printf(u5......线性表(顺序结构)长度iT);printf(n6......清空线性表(顺序结构) n);printfC7……判断线性表(顺序结构)是否为空 “);printf('f8……按位置取线性表(顺序结构)中元素 “);printf(u9......按值查找 “);printfC'lO.....附加操作 “);printfCll.....退出 ”);printfC*请选择 H);do{fflush(stdin);/*清除掉键盘缓冲区*/scanf(H%d",&cmd);}while((cmd!=l)&&(cmd!=2)&&(cmd!二3)&&(cmd!二4)&&(cmd!=5)&&(cmd!=6)&&(cmd!=7)&&(cmd!=8)&&(cmd!=9)&&(cmd!=10)&&(cmd!=l1));switch(cmd){case1:if(InitList(L)==l){printf(H线性表(顺序结构)初始化成功! u);printout(L);break;}else{printfC'线性表(顺序结构)初始化失败! u);break;}case2:printf(”请根据捉示创建线性表(顺序结构)! “);creatlist(L);printfC结果如下 “);printout(L);break;case3:prinlf(“请输入你要插入的数据:”);fflush(stdin);/*清除掉键盘缓冲区*/scanf("%du,&x);printfC请输入你要插入的位置:”); scanf(”%d”,&i);inscrt(L,x,i);printout(L);n++;break;case4:printf(-请输入你要删除元素的位置:”);fflush(stdin);/*清除掉键盘缓冲区*/scanf(”%d“,&i);dellist(L,i);printout(L);n—;break;case5:printfC线性表(顺序结构)长度为:”);printf("%d °,CountList(L));break;case6:printfC清空线性表(顺序结构)!”);ClearList(L);printout(L);break;case7:if(ListIsEmpty(L))printf(”线性表(顺序结构)已经被清空!rT);elseprintf(”线性表(顺序结构)不为空! “);printout(L);break;*/case8:printf(u请输入元索的位迸序号:”);fflush(stdin);scanf(”%d“,&i);printf(”该位置的元素为:%d”,GetElem(L,i));break;case9:printf"请输入元素值:”);fflush(stdin);scanf(”%d“,&x);printf(M该元素的位置序号为:%dM,LocateList(L,x));break;case10:printf(“请输入要附加的元素值门;scanf(”%cT,&x);AppendList(L,x);printf(”附加后: ”);printout(L);break;[while(cmd!=ll);} 四、实验结果

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭