2023年数据结构实验报告三线性表的链式存储.pdf
《2023年数据结构实验报告三线性表的链式存储.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告三线性表的链式存储.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验报告三线性表的链式存储班级:2023X X X 姓名:H oo&L e 学号:20 2 3 X X X X 专业:X X X X一、实验目的:(1)掌握单链表的基本操作的实现方法。(2)掌握循环单链表的基本操作实现。(3)掌握两有序链表的归并操作算法。二、实验内容:(请采用模板类及模板函数实现)1、线性表链式存储结构及基本操作算法实现 实 现 提 醒 (同 时 可 参 见 教 材 p 6 4-p 7 3 页 的 A D T 描述及算法实现及p p t)函数、类名称等可自定义,部分变量请加上学号后3 位。也可自行对类中所定义的操作进行扩展。所加载的库函数或常量定义:#i nc 1 u d e
2、 u s i ng n a m e s pa c e s t d ;(1)单链表存储结构类的定义:t e mpl a t e c 1 a s s L i n k L i s t p u b l i c:oL i nk L i s t ();初始化带头结点空单链表构造函数实现L i n k L i s t (T a ,i nt n);运用数组初始化带头结点的单链表构造函数实现 L i n k L i s t O;i nt l e ng t h ();求单链表表长算法T g e t (i nt i);获得单链表中第i 个结点的值算法i nt 1 o c a t e (T t e m p);v o
3、i d i ns e r t (i nt i,T t e mp);在带头结点单链表的第i 个位置前插入元素e算法T D e 1 e t e (i n t i);法v oi d pr i nt();f i b ool i s E mp t y ();ov oi d d e l e l e Al l ();构函数,但功能相同)pr i v a t e:帆 od e V T *h e a d;(2)初始化带头结点空单链表构造函数实现输入:无前置条件:无动作:初始化一个带头结点的空链表输出:无后置条件:头指针指向头结点。/初始化带头结点空单链表构造函数实现t e mpl a t e L i nk L
4、i s t::L i nk L i s t ()4i e a d =n e w Nod e;在带头结点单链表中删除第i 个元素算遍历单链表元素算法判单链表表空算法删除链表中所有结点算法(这里不是析4i e a d-ne x t -NU L L;)(3)运用数组初始化带头结点的单链表构造函数实现输入:已存储数据的数组及数组中元素的个数前置条件:无动作:运用头插或尾插法创建带头结点的单链表输出:无后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员.运用数组初始化带头结点的单链表构造函数实现t e mpl a t e L i nk L i s t::L i nk L i s t(T
5、a ,i n t n)h e a d =ne w N o de;h e a d ne x t=NU L L;f or (i n t i=0;i n;i+)(N o d e *s=n e w Nod e;s-d a t a=a i ;s-n e x t=h e a d -n e x t;h e a d ne x t=s;0(4)在带头结点单链表的第i个位置前插入元素e算法输入:插入位置i,待插入元素e前置条件:i的值要合法动作:在带头结点的单链表中第i个位置之前插入元素e输出:无后置条件:单链表中增长了一个结点在带头结点单链表的第i个位置前插入元素e算法t e m p l a t e v oi
6、d L i nk L i s t::i ns e r t(i n t i,T t e mp)o d e *p=h e a d;i n t c ou nt =0;w h i l e (p&c ou nt ne x t;oc ou n t +;nf (p=NU L L)c ou t ”i 不合法,越界!”;e 1 s e Nod e *s =ne w N o d e;d s-d a t a =t e m p;s-ne x t =p-ne x t;p-ne x t =s ;)(5)在带头结点单链表中删除第i个元素算法输入:删除第i个结点,待存放删除结点值变量e前置条件:单链表不空,i的值要合法动作:
7、在带头结点的单链表中删除第i个结点,并返回该结点的值(由e传出)。输出:无后置条件:单链表中减少了一个结点在带头结点单链表中删除第i个元素算法t e m p 1 a t e T L i nk L i s t ::D e l e t e (i nt i )Nod e *p=h e a d;i nt co un t=0;a w h i l e (p&c ou nt ne x t ;c ou n t +4-;)i f (p=NU L L)c ou t M i 不合法,越界!”;I s e 。N o d e *s =p-n e x t;,T x=s -d a t a;p-ne x t =s -n e
8、x t;a r e t u r n x;,)(6)遍历单链表元素算法输入:无前置条件:单链表不空动作:遍历输出单链表中的各元素。输出:无后置条件:无/遍历单链表元素算法t e mpl a t e v oi d L i nk L i s t ::pr i nt ()o d e *p=h e a d -n e x t;w h i l e (p)c ou t d a t a V V op=p-ne x t;c ou t e nd l;(7)求单链表表长算法。输入:无前置条件:无动作:求单链表中元素个数。输出:返回元素个数后置条件:无/求单链表表长算法t e mpi a t e i nt L i nk
9、 L i s t ::1 e n g t h()Nod e *p =head;i nt c ou n t =0;ne x t ;o u n t+;r e t u r n c ou nt;)(8)判单链表表空算法输入:无前置条件:无动作:判表是否为空。输出:为空时返回L不为空时返回0后置条件:无/判断非空t e m p 1 a t e b o ol L i nk L i s t::i s E mpt y()Nod e *p=h e a d ne x t;o i f (p)r e t u r n t r u e;e l s e r e t u r n f a l s e;)(9)获得单链表中第i
10、个结点的值算法输入:无前置条件:i 不空,i 合法动作:找到第i 个结点。输出:返回第i 个结点的元素值。后置条件:无获得单链表中第i 个结点的值算法t e mpi a t e T L i nk L i s t:get(i nt i )No d e *p=h e a d ;i nt c ou nt =0;w h i l e (p&c ou n t n e x t;c ou n t -H-;)nf (p-NU L L)co ut”i 不合法,越界!e I s e e t u r n p-d a t a;)(10)删除链表中所有结点算法(这里不是析构函数,但功能相同)输入:无前置条件:单链表存在动
11、作:清除单链表中所有的结点。输出:无后置条件:头指针指向空/删除所有元素t e mpl a t e vo id L i nk L i s t:d e l e l e Al 1()N o d e *p =h e a d ;w h i l e (p)a Nod e *t=p;=pn e x t;t -n e x t=NU L L;(11)上机实现以上基本操作,写出ma i n()程序:参考p7 2vo id ma i n()H nt a 10 =1,2,3,4,5,6,7,8,9,0;/测试带参数的构造函数(前端插入!)oL i nk L i s t l i s t l(a,10);/测试插入d
12、i f (l i s t l.i s E mpt y ()c ou t V链表不为空!”V e nd 1;)e l s e ,c ou t V”链表为空!”e nd l;)1 i s t 1.pr i n t ();oc ou t。测试插入*e n d l;4i s t l.i ns e r t (5,20);。1 i s t l.pr i nt();c o u t 测试表长”V e n d l;c ou t l i s t l.l e n g t h ()e n d 1;c ou t“测试删除V e nd l;oc ou t 1 i s t l.D e 1 e t e (5)e n d 1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 数据结构 实验 报告 线性 链式 存储
限制150内