2023年数据结构顺序表的查找实验报告.docx
I.合影学院HEFEI UNIVERSITY计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据结构项目名称 顺序表查找班级学 号姓名同组人员为实验日期retu r n 0;三、实验分析与小结(实验过程中的问题分析、产生的因素以及解决方法;实验结果分析;有待优化思 绪)(一)实验结果截图1:查找 输入操作数:11:查找 输入操作数:1青羯操作方式2:删除3:输出表0:退出1:查找 输入操作数:1连表兀素:4352 231643一请词君 2:删除513:输出表0:退出直辄人想警查找的甚素守军 鞋的元素16荏第4位置 殳有查找到相应前数1:翻T而需一输戏和数:(二)总结通过顺序表数组元素的特点,我们可以对数据实现顺序查找。四、其它得分(百分制)一、实验目的与规定:(简述本次实验规定达成的目的,涉及到的相关知识点,实验的具体规定。) (一)实验目的:应用顺序表来实现对数据的查找(二)实验规定:用顺序表实现对数据进行查找(三)实验环境:VC+6.0.二、实验内容# i nc 1 u de< s t dio. h >#in clude<stdlib. h ># in c 1 u d e <ma 1 1 o c. h >#de f i ne ERROR 0#define OK 1#def i n e I NIT SIZE 5/ *初始分派的顺序表长度*/#def i ne INCREM 5#def i ne INCREM 5/ 火溢出时,顺序表长度的增量*/1 emType *slist;i nt 1 e ngt h ;int lists i z e;/*定义表元素的类型*/*定义表元素的类型*/typed e f in t ElemTy p e;t yp e def struc t Sq 1 ist/*存储空间的基地址*/*顺序表的当前长度*/*当前分派的存储空间*/ S qlist;i n t InitLi s t _ s q (S q 1 ist *L);int CreateL i st_sq ( S q 1 i s t *L, int n);i n t Listin s e r t _s q (Sqlist *L, int i, E 1 e mTy p e e);i nt Pr i n tLis t _sq (Sqlist *L); int ListDe 1 ete_sq(Sql i st *L, int i);i n t ListLocat e (Sqli s t *L, E 1 emType e );/初始化顺序表int InitLi s t _sq(Sql i s t *L) L >s 1 ist=(ElemType*) mallo c (IN I T_SIZE* s izeof (E 1 emType);if (!L->slis t ) r e tur n ERROR;L->1 e ngth=0;L->listsize=I N I T_SIZE;return OK;/*InitList* /创建顺序表int Cr e at e List_ s q (Sq 1 ist *L, int n)Elem Type e;i nt i;for(i=0;i<n;i+) p r in t f C*in put d a ta %d H , i+1); wprintf(*:");s c a nf & e );i f ( ! L istlns e rt_ s q (L, i+1, e)re t urn ERROR;re t urn OK ;/*Cre a teLis t */*输出顺序表中的元素*/int P r in t L i st_ s q(S q 1 is t *L) i n t i ;for (i=l; i<=L- >1 e ngth; i +)print f ("%-5d”, L->sl i s ti -1);p r i ntf (" n");r e turn OK;/*Prin t Li s t*/在顺序表中插入i nt L i s t In s ert_ s q (S q list *L, int i, El e mType e) in t k;H f ( i <1 | | i >L->le ng th+1)r e tur n ERRO R ;,if (L-> 1 e n g t h >=L-> 1 ist s i z e ) 电一>sli s t = (El e m T y pe*)realloc (L-> s 1 ist,0 (INIT_SIZE+INCREM)* s izeof(El emT y pe);i f (!L-> s list)ret urn ERROR;L->li s tsize+=INCR E M;for ( k=L->l e ngth-1; k >=i-l;k) L-> s li s tk+ 1 =k;)L>slisti- 1 = e ;L-> 1 eng t h+;return OK;/*L i stlnsert*/*在顺序表中删除第i个元素*/int Lis t D e lete_ s q (Sqlist *L, int i ) ftint j;i f (L-> 1 ength<0) 如rint f ("顺序表为空! n");return ERROR;el s e if ( i < 0 | | (i > L->length),(中r i ntf Ci的参数犯错! n");return ERR 0 Rels e(of o r (j = i ; j <= L->leng t h ; j +)8 L->slis t j-1 = L->slis t j;sL->1 e ngth;return OK;4/*在顺序表中查找指定值元素,返回其序号* /int Lis t L o ca t e(Sqlist *L, E 1 e mTy pee)int i, z = 0 ;«f or ( i = 0; i < L->length; i +)if (L->sli s t i = e )3(,prin t f (查找的元素d在第%d位置n *', i+1);0 Z = 1;»/retur n OK;网printf (没有查找到相应的数n);return ERROR;)/主函数int m a in() Sql i st s 1;in t n, i;E lemTyp e e;prin t f ("请创建表,输入顺序表的元素个数:);/*输入顺 序表的元素个数*/scanf("%d,&n);if ( n >0) dp r i n t f ("n 1-Crea t e Sqli s t: n");In i tLis t _sq(&sl);C r ea t eLi s t_sq(&sL n);prin t f ("n2Print Sqlist:n");Pr i n tList_sq(& s 1);dsy s t e m(n c 1 s);else p r intf CERROR °);中rintf (n请选择操作方式n " );opr i n t f Ct 1 : 查找 t2:删除 t 3:输出表 t0:退出n输入操作数:);,scanf("%d”, &n);while(n)d print f ( '* n 链表元素:n ”);Pr i nt L i s t_sq (& s 1);3 i f (n = 1) 叼ri ntf ("n请输入想要查找的元素:");«»scan f ("%d", &e);® istLocate (&sl, e );),if (n = 2)«prin t f ("n请输入想要删除元素的位置:");s canf(n %d n ,& i );, Li s tDelete_ s q(& s 1 , i );gg i f (n = 3)。(d prin t f ("n 链表元素: n ");.r intList_sq(&sl);)printf(n t请选择操作方式“);。p r intf Ct 1 :查找t 2 :删除t 0:退出n 输入操作数:");§s canf ("%d ”, &n);