数据结构实验报告示例.doc

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

数据结构实验报告:编制一个Joseph约瑟夫环示例程序

◎实验题目:给定(也可自己定相关内容)

◎实验目的:给定(也可自己定相关内容)

◎实验内容:给定(也可自己定相关内容)

一、?需求分析

陈述程序设计的任务,强调程序要解决的问题是什么??明确规定:输入的形式和输入值的范围;输出的形式;程序所能达到的功能;测试数据

1.输入的形式和输入值的范围

???本程序中,输入报数上限值m和人数上限l,密码,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。

2.输出的形式

???从屏幕显示出列顺序。

3.程序功能

???提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序。

4.测试数据

(1)

输入

20

7

3172484

输出

6???1???4???7???2???3???5

二、概要设计

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

以单向循环链表实现该结构。

1.抽象数据类型的定义为:

ADTLNode

{

???数据对象:D={ai|ai∈CharSet,i=1,2,…,n,n≥0}

???数据关系:R1={ai-1,ai|ai∈D,I=2,…,n}

基本操作:

???InitList(L)

???????操作结果:构造一个最大长度ms,内容为空的有序表L。

???ClearList(L)

???????初始条件:线性表L已经存在。

???????操作结果:将L重置为空表。

???EmptyList(L)

???????初始条件:线性表L已经存在。

???????操作结果:若L为空表返回TRUE,否则返回FALSE。

???ListLength(L)

???????????初始条件:线性表L已经存在。

???????操作结果:返回L中数据元素个数。

???GetElem(L,pos,e)

???????初始条件:线性表L已经存在,1≤i≤ListLength(L)。

???????操作结果:用e返回L中第i个数据元素的值。

???LocateElem(L,e)

???????初始条件:线性表L已经存在。

???????操作结果:返回L中第1个与e相同的元素的位序。若不存在返回0。

???ListInsert(L,i,e)

???????初始条件:线性表L已经存在。

???????操作结果:在L中的第i个元素的位置之前插入新元素e,L的长度加1。

ListDelete(L,pos,e)

???????初始条件:线性表L已经存在,1≤i≤ListLength(L)。

???????操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。

???ListTraverse(L)

???????初始条件:线性表L已经存在。

???????操作结果:依次对L的每个数据元素进行访问。

}ADTSqList

本程序包含以下模块:

(1)主程序模块:

voidmain()

{

???初始化;

???输入数据;

???执行功能;

显示结果;

}

(2)各功能模块——实现单循环链表表的各项功能。

各模块的调用关系:

主程序

??↓

各功能模块

三、详细设计

?实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。

设计思路:写出存储结构,主要算法的基本思想。?

设计表示:每个操作及模块的伪码算法。列出每个过程或函数所调用和被调用的过程或函数,也可以通过调用关系(层次)图表达。?

实现注释:各项功能的实现程度、在完成基本要求的基础上还实现了什么功能。?

#includestdio.h

#includestdlib.h

#includestring.h

#defineTRUE1

#defineFALSE0

#defineOK1

#defineERROR0

#defineINFEASIBLE-1

#defineOVERFLOW-2

typedefintStatus;

typedefintElemType;

/*定义类型*/

typedefstructLNode

{

???ElemTypedata;

???structLNode*next;

}LNode,*LinkList;

/*1初始化,置表头指针为空*/

voidInitList(LinkListHL)

{

???HL=(LinkList)malloc(sizeof(LNode));

???HL-next=HL;

}

/

文档评论(0)

150****8199 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档