2023年实验报告线性表的顺序存储结构.docx
*大学实验报告学院:专业:班级:姓名学号实验组实验时间指导教师成绩实验项目名称实验一线性表的顺序存储结构实 验 目 的1 .纯熟掌握线性表的基本操作在顺序存储和链式存储上的实现;2 .以线性表的各种操作(建立、插入、删除等)的实现为重点;3 .掌握线性表的动态分派顺序存储结构的定义和基本操作的实现;实验规定1、独立完毕实验,并认真撰写实验报告 2、分析实验中出现的问题,并找出因素实 验 原 理线性表顺序存储结构的初始化、遍历、插入、删除算法的程序编写及运用实验 仪 器运营Visual C+的微机一台实验环节1、分别编写线性表顺序结构的初始化、遍历、插入、删除的程序2、编写一个主程序来调用初始化、遍历、插入、删除函数3、运营程序,并记录运营过程中出现的问题,进行分析和解决4、撰写实验报告实 验 内 容1 .输入一组整型数据,建立顺序表。2 .实现该线性表的遍历。3 .实现该线性表的删除.4、实现该线性表的插入。5、编写一个主函数,调试上述算法。程序:#i n clu d e< i o s tre a m. h >#include<stdl i b. h >t y pe d e f int Elemtype;struct 1 i s t «Elemtype *elem;»int size;«int max s ize;);void in i tl i s t(list & 1)/线性表的初始化(soutG线性表的初始化! " «end 1;. ma x siz e =1 0 ;1. el e m=n e w Elemtypel. ma x si z e;if ( 1 . el e m二二NULL)(acoutV V”动态分派空间失败! "Vendl;3 return;a1. s i ze= 0 ;)bool ins e rt 1 ist (li s t & 1 » Elem type item, int pos)/ / 在线性表中插入元素(。/cou t <<”对任意的线性表中任意大位置插入任意的元素”<<cndl;if(po s <11|pos> 1 . s i z e+1)实验数据«c out<< "插入的位置非法! "v< e ndl;。 r eturn fa 1 se;»if (1. siz e -1. max si z e)。ain t k=s i z e o f (Elemty p e);1 . e 1 e m= (Elemtyp e *) realloc ( 1 . elem, 2*1. in a xsize* k );oif(l. e 1 em=NULL)0 (a cout<<”分派空间不成功!ndl;3 r e turn fals e ;)1. maxsi z e=2 * 1 . max size;4fo r (i n t i=l. siz e -1; i>=p o s-l; i)。1. e 1 emi+l = 1. e lemi;1. elempos-l =i t em;a 1 . s ize+;ret urn true;void t ra v e rselis t ( 1 is t 1)线性表遍历for ( i nt i=0;i<l. size; i+)。 c o u t «1. e lemi <<endl;)bool d e 1 etel i s t (1 i st &1, in t pos)删除线性表中的元素。cout <<删除线性表中的任意元素<<endl;if ( p os<0 | po s > 1 . size)(cou t << " po s 值无效!”<<en dl;o return fal s e;i f ( 1 . si z e=0)0 (a cou t <<"线性表为空表!"<<end 1;o r e t ur n f als e ;)。f o r(int i=pos; i< 1 . s i ze; i +)。1, elemi-l =1. e lem i ;.size;if ( f loat (1. size)/ 1 .ma xsize<0. 4&&Lmaxsize>10)(o int k=sizeof ( E lem type);。1 . e 1 em=( E lemtype *) re a llo c ( 1. el e m, 1. m a xs i z e * k / 2 );。1. m a x s i z e=l. maxsiz e / 2;0 )r et u r n true;)voi d display(li s t 1)(c out«l. size<<en d 1;cout«l. maxsiz e <<endl;。for (int i = 0 ; i<l. size; i +)° 。cout<"输出第"<Vi+ 1 « "个元素<<end 1 ;。 c o u t<< 1 . e lemi«*0 ).void m a in()(®in t a 5;i n t i;E 1 em t y p e x;i s t k;cou t « "请输入线性表元素:"<<endl;。f o r (i=0; i< 5 ; i+) c i n»ai;co u t<< e n d 1;o i ni t 1 i s t ( k);tr a v e rse 1 ist (k);for (i=0; i < 5 ; i+4-)ins e rtlis t ( k , ai, i + 1); tra vers elist (k);oc out<<”插入一个位置:"<<endl;®cin>>x;cout« e ndl;。i nse r t 1 i s t (k, 0, x); trav e rscl i st ( k ); cou t<<“插入一个元素:"« e ndl;。c in» x ;®co u t« e n dl;。i nse r t 1 ist ( k , x, 3); otraverselist(k);OC out久”删除一个位置的元素:; cin>>x;if(d eletelis t (k, x)a c o u删除成功! "<< e n dl;aelse c out式"删除灭败"Vendl;tr a v e r s e 1 is t ( k);)运营结果:请输入线性表元素:1 2 3 4 5线性表的初始化?1234次人一个位置;6234 ,)0惭入一个位置; -3随入的位置非法?1234正入一个元素:实验总结1、线性表的初始化为一个空表时,要明确给空(1. 1 i st=NULL)2、线性表的插入、删除操作前都要进行非法位置的剔除3、插入、删除等操作非法时,一定要有返回值(ret u rn false),否则操作会出现错误4、程序编写过程中,要注意细节部分,减少错误的产生,减少调试时间指 导 教 师 意E1署名:注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。