数据结构报告实验报告.docxVIP

  • 17
  • 0
  • 约2.01万字
  • 约 58页
  • 2017-05-21 发布于浙江
  • 举报
数据结构报告实验报告

院 系: 计算机科学学院 专 业:计科年 级: 2013课程名称: 数据结构 学 号:201321091135姓 名:司少武指导教师: 刘晶 2016年 6月12日实验一 线性结构的基本操作和应用实验目的及要求一、实验目的:1、掌握线性表的结构特点和实现方法,能够编写程序实现线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算。2、能够掌握特殊线性表(栈和队列)的结构特点及其基本操作;3、能利用栈的特性进行实际应用。二、实验题目及要求:线性结构部分共包含三个实验内容:用顺序表或者链表实现线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度。线性表的基本应用:从以下两个实验题目中任选一个实现:1) 利用线性表实现一元多项式的相加。2) 利用线性表实现约瑟夫环问题。利用栈的基本操作,编写程序实现括号匹配问题:从键盘输入一组括号,当程序接收第一个左括号之后,期待与之匹配的右括号,如果等到的是另外一组括号的左一半则等待,若等到另外一个不匹配的右括号则程序结束并提示括号不匹配;若整个括号序列判断完毕,但栈未空则表示仍有括号未配对,提示不匹配。否则提示匹配。三、实验报告书写要求: 简明清晰的写出每个实验题目的算法步骤,可以混合使用自然语言、流程图及伪代码的方式,不能直接复制源程序。每个实验题目需要附上程序正确运行结果的截图。题目一 线性表的基本操作算法步骤的简要说明(流程图或伪代码)题目:用顺序表或者链表实现线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度。算法思想:主要设计了一个包含数据和指针域的结点。 Data *next 主要思想:插入: 删除:主函数int main() :初始化一个链表L,显示菜单,主要语句:switch语句,while语句,goto语句。创建并输入链表数据linklist createlist(),在该函数中创建头结点,并输入结点上的数据。伪代码:while(当x!=00){p = new list;p-data = x;p-next = NULL;q-next = p;q = p;}显示链表数据void show(linklist L)先判断是否是空表,再逐个寻找想要的元素。主要代码:while(p){coutp-data\t;p = p-next;}获取链表长度int getlength(linklist L)先判断是否为空,再遍历链表,算出链表长度。主要代码:while(p){p = p-next;length++;}获取第i个元素int getdata(linklist L,int i)1)当0ilength时,遍历链表,找到第i个元素。2)主要代码:while(pji){j++;p = p-next;}改变链表数据int changedata(linklist L,int e,int d)找到要修改的值e,再把d赋值给e.2)主要代码:while(pp-data!=e){p = p-next;}if(!p)return ERROR;p-data = d;插入一个结点linklist insertlist(linklist L,int i,int e)1)因为要插入第i个元素,所以要先找到第i-1个元素,在i-1后面插入。2)主要代码:s-data = e;s-next = p-next ;p-next = s;删除一个结点linklist deletelist(linklist L,int i)1)同插入差不多,先找到第i-1个元素,然后再把i-1结点指针域指向原本指向结点的下一个,把中间那个删除,再free,释放空间,主要代码:q = p-next;p-next =q-next;free(q);实验截图:心得体会:源代码:/*线性表的操作(单链表)*/#includestdio.h#includestdlib.htypedef struct LNode{int data; struct LNode *next;??}LNode, *Linklist;/*线性表的结构*/?/*基本操作函数*//*构造空线性表。操作结果:构造空线性表,如成功返回1,否则返回0。*/int InitList(Linklist L){ L=(Linklist)malloc(sizeof(LNode));? if(L) {? L-next=NULL; return 1;? } else return 0;}/*顺序创建一个线性链表函数。当输入的结点的数据值为0时,线性链表创建结束。返回线性表的头结点指针。*/Linklist hrear

文档评论(0)

1亿VIP精品文档

相关文档