数据结构实验报告 - 链表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
1. 实验目标
(1)熟练掌握线性表的链式存储结构。
(2)熟练掌握单链表的有关算法设计。
(3)根据具体问题的需要,设计出合理的表示数据的顺序结构,并设计相关算法。
2. 实验内容和要求
(1)本次实验中的链表结构指带头结点的单链表;
(2)单链表结构和运算定义,例如求链表长度,在第i个结点前插入值为x的结点;(3)实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;(4)程序有适当的注释。
3. 数据结构设计(给出单链表的数据结构)
typedefstruct //结点结构
{
elementtype data; //存放数据的字段
struct node *next; //指向后继结点的指针
} node;
4. 算法设计(给出具体设计的函数代码)
(1) 初始化链表运算的实现
算法如下:
voidinitial_list( node * &L)
{
L=new node; //产生头结点
L->next=NULL; //设置后继指针为空
}
(2) 求链表长度运算的实现
算法如下:
intlist_length( node *L)
{
int n=0; node *P=L->next;
while( P!=NULL)
{
n++; //存在元素结点时就计数
P=P->next; //继续后继结点的计数
}
Return n; //返回结果
}
(3) 插入算法的实现
在链表L的第i个元素结点前插入值为x的结点算法如下:
void list_insert( node *L, int i, elementtype x)
{
node *P=L; int k=0; node *S;
while( k! = i – 1 && P! = NULL) //搜索a i-1结点
{
P=P->next; p++;
}
if ( P==NULL ) error( “序号错“); //等价于判断插入序号是否正确
else
{ S = new node; //产生结点
S - > data=x; //装入数据
S - > next = P -> next;
P- > next =S; //插入结点
}
}
5. 总结和心得
这次数据结构的上机实验,我做了单链表的初始化、求链表的长度和在链表中插入新结点三个试验。在实验过程中,表达式求值和括号匹配出错的比较多,一是由于粗心大意,二是由于知识点掌握的还不够熟悉,这让我吸取了认真细心的教训,学习毕竟来不得半点马虎。
在做实验的过程中,遇到不会的就向老师和同学请教,并一起讨论,最终解决问题。这也使我发现了一个人的知识是比较狭隘的,通过交流和沟通,和别人分享自己的观点并吸收他人的优点,何以是我们取他人之长补己之短。更重要的是,这次实验练习中,我对数据结构产深了更加浓厚的兴趣。而且,我对计算机比较感兴趣,就更应该学好数据结构。