《2023年实验报告一顺序表的操作.docx》由会员分享,可在线阅读,更多相关《2023年实验报告一顺序表的操作.docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构实验报告一系别:班级:学号:姓名:日期:指导教师:一、上机实验的问题和规定:顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、 插入与删除。具体实现规定:从键盘输入10个整数,产生顺序表,并输入结点值。从键盘输入1个整数,在顺序表中直找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。从键盘输入2个整数,一个表达欲插入的位置i,另一个表达欲插入的数值x,将x插入在相应位置 上,输出顺序表所有结点值,观测输出结果。从键盘输入1个整数,表达欲删除结点的位置,输出顺序表所有结点值,观测输出结果。二、程序设计的基本思想,原理和算法描述:(涉及程序的
2、结构,数据结构,输入/输出设计,符号名说明等)三、源程序及注释:# i ncl u de /*顺序表的定义:*/#def i n e ListSi z e 100/*表空间大小可根据实际需要而定,这里假设为10 0 */t y p ed e f int Da t aType; /*1) a t a Type可以是任何相应的数据类型如i nt, f 1 oat 或 char*/t yp e def s truct D a taTyp e d ala ListSize*向量 d a t a用于存放表结点* /n t 1 e ngth;/ *当前的表长度*/ Seq List;/*子函数的声明*/v
3、oid Cre a t cList (Sc q Lis t * L, i n t n ) ;/*创建顺序表函数文/in t L o cat e Li st (S e qLi st L, Da t a T ype x) :/*查找顺序表* /void InsertList (SeqLi s t * L , DataType x , i nt i ); /*在顺序表中插入结点x*/void DeleteLi s t(SeqLis t * L, in t i) ;/*在顺序表中删除笫 i 个结点*/vo i d Pr i nt L i s t (S e qL ist L, int n) ; /*打印
4、顺序表中前n个结点*/void m a in ()(S eqList L;in t n= 1 0, x, i/*欲建立的顺序表长度*/L. length=0;。/*调用创建线性表函数*/printf (create f unc t io n : n );C reateLis t (&L, n) ;。/ * 建立顺序表*/oPr i ntL i s t (L, n) ;。 。/*打印顺序表 */*调用查找函数*/prin t f (s e a r c h f unction: n );p r i n t f (*inp u t the data you want to s e arch:);sc
5、anf ($d”, &x);i =LocateL i st(L, x);/*顺序表查找*/if (i=0)printf (sor r y, dont f i nd %d!n n , x);els ep r i ntf (i have find t he % d , it locate i n %d!nn,z, x , i );/大调用插入函数*/print f (/,Insert f u n c t ion:n*);P r i n t f (输入要插入的位置:(inpu t the p o si t i o n : ) z,);P rin t f (输入要插入的元素:(input t he d
6、ata :);oscanf (%d , & x);olnse r t L i st ( &L, x, i ) ;/*顺序表插入 */PrinlLi s t(L, n)打印顺序表 */*调用删除函数*/p r intf ( delet e f u nctio n :n);printf (输入要删除的位置:(i n p u t t h e po si t i o n: );oscan f (%d”,&i);Delete List (&L, i)顺序表删除 */oPr i n t List (L, n) ;。/*打印顺序表 */)/*顺序表的建立:*/v o id Cre a teList(S eq
7、List *L, i n t n) inti;。f or (i= 0 ; in; i +)。printfCXninp ut th e %d da t a: , i +1);scanf&(*L). data i );(*L) .length=n; )/ *顺序表的查找:*/i n t Lo c ateList(SeqList L, DataType x) i nt i=0;wh i 1 e (iL. length&x! =L. data i)+i;if ( i L. length) r eturn i+1;else re t u rn 0;)/*顺序表的插入:*/vo i d I nse r t
8、 L i st (SeqList *L, DataType x, in t i)/大将新结点x插入L所指的顺序表的第i个结点的位置上大/int j ;4f (i(*D. length)。(print f (插入位置非法“);e xit (0);if (*L). 1 c ngth=ListSize) aprintf(表空间溢出,退出运营);exit(0 );)for (j=(*L). 1 e ng t h- 1 ; j = i 1; j一一)dataj+ 1 = (* L). d a ta j ;/*顺序表元素从后向前依次后移*/(礼).data i-l=x;/*将x插入第i个结点位置*/(*L
9、) . 1 cngth+;/*表长自增 1* /*顺序表的删除:*/v o id Dele t eL i s t (S e qLi s t *L, inti)/*从L所指的顺序表中删除第i个结点*/in t j;if (i(* L). 1 ength)(。printf (删除位置非法”);ex i t ( 0 );for (j = i; j= (*L). lengt h -1; j +)a (礼).dataj=(*L). dat a j + 1 ; /*顺序表自第i个结点开始,依次前移*/ 。(* L). length-;/* 表长自减 1*/*顺序表的打印:*/void P r intList (SeqL i st L, i n t n) int i ;pri n t f ( t he sequal list d a ta is:);for (i=0; i n ;i+)pr i n tf( %d ”,L. da t a i);printf(wnn w);四、运营输出结果:五、调试和运营程序过程中产生的问题及采用的措施:六、对算法的程序的讨论、分析,改善设想,其它经验教训:七、对实验方式、组织、设备、题目的意见和建议:
限制150内