链表实验报告Word文档格式.docx
《链表实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《链表实验报告Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
2链表结构定义,算法实现放入库文件“linkList.h”;
运算和变量命名直观易懂,并有相应的注释
1.2实验内容
<
1>
求链表中第i个结点的指针(函数),若不存在,则返回NULL。
2>
在第i个结点前插入值为x的结点。
3>
删除链表中第i个元素结点。
4>
在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。
5>
将单链表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),申请2个头结点,把分开的奇数项和偶数项分别链接到这2个头结点上,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便对照求解结果。
6>
求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。
2.实验目的
2.1理解线性表的链式存储结构。
2.2熟练掌握单链表结构及有关算法的设计。
2.3根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。
3.数据结构设计
实验代码
node*L,*p;
inti;
createNode(*&
L);
//尾插法创建一个链表,
cout<
"
链表包含:
endl;
p=L->
next;
while(p)
{
cout<
p->
data<
"
;
p=p->
}
请输入待求元素序号:
cin>
>
i;
locateNode(L,i,&
p);
if(p!
=NULL)
序号"
i<
的元素值为:
else
NULL"
destroyList(L);
//销毁链表,释放heap内存
_CrtDumpMemoryLeaks();
//debug模式下检测是否内存泄漏
测试截图
node*L,*p;
elementTypex;
createNode(L);
插入前链表包含:
插入前表长度len="
listLength(L)<
//调用长度函数
请输入待插入的元素(x):
x;
请输入插入位置(i):
//调用插入函数,并检查是否插入成功
if(insertNode(L,i,x))
cout<
元素"
<
x<
成功插入表第"
i<
"
个节点位置!
抱歉!
元素插入失败!
//打印插入元素后的链表
插入操作后链表元素:
插入后表长度len="
destroyList(L);
creatNode(L);
请输入待删除元素位置(i):
//调用删除函数,并检查是否删除成功
if(deleteNode(L,i))
删除链表第"
个节点成功!
删除元素失败!
//删除节点后的链表
删除节点后的链表元素:
//递增有序表
rankInsert(L,x);
_CrtDumpMemoryLeaks();
node*L,*p,*A,*B,*k,*m;
seperateNode(L,A,B);
偶数表:
k=A->
while(k)
k->
k=k->
奇数表:
m=B->
while(m)
m->
m=m->
node*L,*A,*B,*p,*q,*r;
createNode(A);
createNode(B);
intt;
A表元素:
p=A->
B表元素:
q=B->
while(q)
q->
q=q->
t=getPENode(A,B,L);
switch(t)
case0:
无公共元素"
break;
case1:
cout<
公共元素:
r=L->
while(r)
r->
r=r->
4总结和心得
通过对链表上机实验的操作更加了解了可以用链来实现使用计算机零碎内存,并且知道了对使用过的内存使用destoryList来销毁内存的重要性;
整合各函数时遇到了线性表一样的问题,解决方法亦类似;
尾插法创建链表时,使用了直接用元素个数控制的方法,直接用p=p->
next避免了连接链表指针的繁琐过程。