网站大量收购独家精品文档,联系QQ:2885784924

数据结构与算法D实验指导书.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法D实验指导书

《数据结构与算法D》实验指导书 武汉理工大学教材中心 2009年7月 实验一 线形链表的运算 一、实验目的 掌握线性表在顺序分配下的插入与删除运算。 二、实验原理 线性表是数据元素的有限序列,在日常生活中有很多相关的例子,如 1、人民币面值构成线性表 2、一年由4个季节构成 3、一个n维向量x=(x1,x2,x3,……,xn)。 线性表的结构特点是:数据元素之间是线性关系,即在线性表中必存在唯一的一个“第 一个”元素,必存在唯一的一个“最后一个”元素;除第一个元素外,每一个元素有且只有一个前趋元素;除最后一个元素外,每个元素有且只有一个后续元素。 若线性表中的数据元素之间可比较,则称该线性表为有序表,否则称为无序表。 三、实验内容 编写程序完成单链表的下列基本操作: (1) 建立一个长度为n的单链表。 (2) 插入新结点。 (3) 删除某一个结点。 (4) 打印输出La中的结点元素值。 四、实验方法 1、数据产生 通过随机数函数获得数据,或通过赋值方法确定数据。 2、线性表的插入与删除 线性表在本次实验中是动态变化,插入、删除元素,为使线性表任保持有序性,必须要找到元素插入或删除的位置。 插入算法: Insert_Link(LinkList * L,int i,datatype e) { LinkList *p,*s; int j; s=(LinkList *)malloc(sizeof(Lnode)); s-data=e; s-next=NULL; p=L; j=0; while(p!=NULL ji-1) { p=p-next; ++j;/*寻找第i-1个结点*/ } if(!p||ji-1) return ERROR; s-next=p-next; p-next=s; return OK; } 删除算法 Delete_Link(LinkList *L,int i,datatype e) { LinkList *p,*q; int j; p=L; j=0; while(p-next ji-1) { p=p-next; ++j; } if(!p-next||ji-1) return ERROR; q=p-next; p-next=q-next; e=q-data; free(q); return OK; } 五、实验步骤和要求 1、确定构成线性表的数据; 2、根据给出算法编制程序,调试通过; 3、运行程序,检查程序是否完成实验内容中的要求。 六、实验报告要求 1、原理说明; 2、算法说明; 3、程序清单。 七、思考题 比较指针和数组实现线性表的插入、删除的异同。 实验二 堆栈/队列结构及运算 一、实验目的 用循环队列的链式结构求解约瑟夫问题。 二、实验原理 队是一种特殊的线性表,它只允许在一端进行插入,在另一端进行删除,允许插入的一端称为队尾,通常用一个队尾指示器指向队尾元素;允许删除的一端称为排头,用一个排头指示器指向排头元素。在队列中,最先插入的元素将最先删除,因此又称队为先进先出线性表。 从存储结构看,队分为顺序队与链队两种。 顺序队用一维数组连续存放队列元素,容量固定;链队的容量无法预先估计,可动态变化。在链队中我们设一个头结点,头指针始终指向头结点,尾指针指向队尾元素。 三、实验内容: n个人围坐在圆桌周围,从某个人开始编号为1,2,3,4,…,n,编号为1的位置上的人从1开始报数,数到m的人出列,从下一个人又从1开始报数,数到m的人便是第二个出列的人。如此重复下去,直到最后一个人出列为止。 四、实验方法: 1、初始化循环单链表 void init_linklist(LinkList *L)/*循环单链表进行初始化*/ { (*L)=(POINTER)malloc(sizeof(struct LNode)); (*L)-data=-1; (*L)-next=(*L); } 2、 入队操作算法 Inert_sque(LinkList * L) {int num; /*插入队列的结点值*/ LinkList p; while(num!=XX)

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档