数据结构实验报告 - 链表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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. 总结和心得

这次数据结构的上机实验,我做了单链表的初始化、求链表的长度和在链表中插入新结点三个试验。在实验过程中,表达式求值和括号匹配出错的比较多,一是由于粗心大意,二是由于知识点掌握的还不够熟悉,这让我吸取了认真细心的教训,学习毕竟来不得半点马虎。

在做实验的过程中,遇到不会的就向老师和同学请教,并一起讨论,最终解决问题。这也使我发现了一个人的知识是比较狭隘的,通过交流和沟通,和别人分享自己的观点并吸收他人的优点,何以是我们取他人之长补己之短。更重要的是,这次实验练习中,我对数据结构产深了更加浓厚的兴趣。而且,我对计算机比较感兴趣,就更应该学好数据结构。

相关文档
最新文档