欢迎来到天天文库
浏览记录
ID:42465756
大小:48.50 KB
页数:7页
时间:2019-09-15
《1实验-顺序表顺序存储》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一线性表(顺序结构)—、实验目的1.掌握实现线性表的基本操作方法;2.掌握线性表的基本操作:建表、插入、删除、输出等运算在顺序存储结构的实现;3.通过本次实习加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。熟悉线性表的棊木运算在两种存储结构(顺序结构和链式结构)上的实现。二、实验内容线性表的基本操作:建表、插入、删除、输出等运算在顺序存储结构的实现;三、实验代码/咅00:基本信息定义*/#include"stdio.h"#include"malloc.h"#defineSUCCESS1#defineFAILURE0#dcfinc
2、null0#definemaxsize100typedefintdatatype;typedefstruct/*定义线性表(顺序结构)数据类型*/{datatypedatafmaxsize];intlast;[sequenlist;intn;/*定义功能选择菜单函数引voidprint(){piintf(”・・・■线性表(顺序结构)的基本操作・・・An”);printf(H开始“);)/*打印线性表(顺序结构)*/voidprintout(sequenlist*L){inti;for(i=1;i<=L->last;i++)printfC'[%d]”
3、,i);printf(Hn);for(i=l;i<=L->last;i++)printf(u%6du,L->data[i]);printf(Hn);/*01线性表(顺序结构)的初始化*/intlnitList(sequenlist*L){L=(scqucnlist*)malloc(sizeof(sequenlist));if(!L){returnFAILURE;elseL->last=-1;returnSUCCESS;/*02创建线性表(顺序结构)*/voidcreatlist(sequenlist*L){inti;inttmp;printfC
4、1请输入线性表中数据的个数:”);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(”线性表(顺序结构)已满
5、“);return0;}elseif((i6、7、(i>L->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((i8、9、(i>L->last))10、/*如果输入的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判断线性表(顺序结11、构)是否为空引/*boolListIsEmpty(sequenlist*L){returnL->last==-1;}*//*08按位直取线性表(顺序结构)屮元索*/datatypeGetElem(sequenlist*L,intpos){if((L->last==-1)12、13、(pos<1)14、15、(pos>L->last))/*表为空或者位置不对*/{printf(n线性表为空,或者输入的位置有错!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函数犁intLocateList(sequenlist*L,data16、typevalue){inti=0;if(L->last==-1)/*表为空*/{printf
6、
7、(i>L->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((i8、9、(i>L->last))10、/*如果输入的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判断线性表(顺序结11、构)是否为空引/*boolListIsEmpty(sequenlist*L){returnL->last==-1;}*//*08按位直取线性表(顺序结构)屮元索*/datatypeGetElem(sequenlist*L,intpos){if((L->last==-1)12、13、(pos<1)14、15、(pos>L->last))/*表为空或者位置不对*/{printf(n线性表为空,或者输入的位置有错!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函数犁intLocateList(sequenlist*L,data16、typevalue){inti=0;if(L->last==-1)/*表为空*/{printf
8、
9、(i>L->last))
10、/*如果输入的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判断线性表(顺序结
11、构)是否为空引/*boolListIsEmpty(sequenlist*L){returnL->last==-1;}*//*08按位直取线性表(顺序结构)屮元索*/datatypeGetElem(sequenlist*L,intpos){if((L->last==-1)
12、
13、(pos<1)
14、
15、(pos>L->last))/*表为空或者位置不对*/{printf(n线性表为空,或者输入的位置有错!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函数犁intLocateList(sequenlist*L,data
16、typevalue){inti=0;if(L->last==-1)/*表为空*/{printf
此文档下载收益归作者所有