4、课程设计说明书范文

更新时间:2023-10-04 09:22:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西安理工大学高科学院课程设计

前言

1.1设计背景和意义

1.1.1数据结构简介

数据结构是计算机程序设计的重要理论设计基础,它不仅是计算机学科的核心课程,而且成为其他理工专业的热门选修课。数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法。

比如在计算机中央处理器中,CPU接到一个中断请求便会停下当前正在执行的指令去处理这个中断请求完成中断操作,首先要做的就是保护现场。保护现场需要将下一条指令的地址指针和当前指令返回地址等重要的数据进行存储。在众多的数据结构中,这些重要的数据被存储到栈这个数据结构中。 1.1.2选择算法的原因

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。

1.2设计的原理和内容

本次程序设计采用C语作为描述和实现算法的程序语言,主要的设计思路就是完成对栈的操作,如栈的插入、删除、取栈顶等等,这些操作都是通过C语言程序来实现的。最后的结果就是运行程序时能够完成对以上设计的操作。

工程概况

2.1 项目所用的时间

从这个项目开始到结束总共历时十天。完成于2012年6月26日。

2.2项目负责人

汪涵,女,计算机科学与技术14-1,学生。

2.3项目指导人

朱赖红,男,信息工程学院教师,副教授。

第 1 页 共 10页

西安理工大学高科学院课程设计

正文

栈是这样一种数据类型,其主要属性是由支配其元素的插入与删除的规则来决定的,被删除或移去的元素只能是最后插入的,即所谓具有后进先出(LIFO)性质或规范。

3.1 设计的目的和意义

我们是计算机科学与技术专业的本科生,《数据结构》是我们重要的必修课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程设计的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。为后继课程的学习打下坚实的基础。

马克思主义唯物辩证法认为,实践是连接客观实在和人主观意识的通道和桥梁。物质对意识的作用以及意识对物质的反作用都蕴含在实践活动当中。也就是,实践是检验真理的唯一标准。对这门课的学习状况的好坏,用一次课程设计便可以检验出来。而这,就是本次我们进行设计的意义之所在。

3.2 目标和总体方案

栈是一种受限制的线性表,具体表现在访问栈的只能按照“后进先出”的原则,即压入栈的数据元素不能以任意的方式进行访问和弹出栈。最先进入栈的数据元素若要弹出堆栈只能等到其上一个数据元素出栈以后方可出栈。

本次设计的目标在于将栈的这一特殊的访问规则和特殊的操作用程序语言形象地再现和描述出来。于是特制订了一个总体的方案。

由于时间只有十天,故做了如下的计划安排,将这项工程分为两大部分:程序的设计和程序的调试。

首先在程序的设计部分由分为几个步骤:

第一步:查阅有关数据结构栈操作的资料,用半天的时间。 第二步:设计这个项目的整体架构和算法。用一到两天的时间。 第三步:选择一门程序设计语言进行算法的描述。两天的时间。 其次,进行程序的调试。用一天。

3.3 设计方法和内容

“工欲善其事,必先利其器”。有了总体方案后必须用一个事半功倍的设计方法来提高程序设计的效率。在这个项目的设计上,笔者选择了C语言作为算法的描述语言,因为C语言具有丰富的表达能力以及代码的高效性,并且有着良好的移植性和灵活性。同时,采用“自顶向下,个个击破”的程序设计思路和思想,充分运用C语言强大的功能。

笔者将这个项目整体设分成了两个模块。一个是功能函数模块群,主要实现设计方案中的具体功能,是整个项目的执行部分;另一个是主函数模块,主要实现对数据流和控制流的控制,使整个项目的控制部分。

这两大模块有机的结合共同构成了这个项目的全部面貌。 3.3.1 硬件环境

微型计算机:联想台式品牌机

中央处理器:Pentuim 4 主频:3.0GHz 主存容量: 512M 硬盘容量: 80G

第 2 页 共 10页

西安理工大学高科学院课程设计

3.3.2软件环境

Windows XP 操作系统

Microsoft NotePad 记事本程序 Microsoft Visual C++编译器 3.3.3 设计流程图

开始 SWICH语句 初始化一个顺序栈 进栈 删除一个元素 出栈 结束 图3-1 程序流程图

3.3.4设计内容

一、程序设计的基本算法介绍

1、栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。

2、栈的基本操作:

(1) 置空栈 initStack(s); 设置一个空栈S。 (2) 进栈push(S,x):将元素x进到栈S中。

(3) gettop(S,x):将栈s的栈顶元素赋给x,栈指针递减。 (4) pop(s,x): 将栈s的栈顶元素赋给x,栈指针递减。

(5) 判断栈空stackempty(s):若栈为空,返回1,否则返回0

3、通常栈用顺序表存储,分配一块连续的内存区域存放栈中元素,并用一个变量指向当前的栈顶。假设栈的元素个数最大不超过整数MaxSize,所有的元素都具有同一数据类型ElemType,则可用下列方式来定义栈类型stack:

Typedef struct {

Elemtype e[MAXSIZE];

第 3 页 共 10页

西安理工大学高科学院课程设计

Int top; }Stack;

二、程序中涉及的基本算法

栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。

栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表。

1、进栈(PUSH)算法

(1)若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);

(2)置TOP=TOP+1(栈指针加1,指向进栈地址); (3)S(TOP)=X,结束(X为新进栈的元素); 2、退栈(POP)算法

(1)若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);

(2)X=S(SOP),(退栈后的元素赋给X);

(3)TOP=TOP-1,结束(栈指针减1,指向栈顶)。

3.4 程序的设计思想和内容

3.4.1程序设计的初始运行环境

这个项目是由主函数模块和功能函数模块组成的。其中主函数模块是项目的控制部分,很重要的一个作用就是对整个程序的初始化功能。在设计初始运行环境时,为了每一次栈操作后都可以进行对程序的初始化,采用了do…while循环语句构成一个无限循环,使得每一次栈操作之后都可以将程序初始化重新选择对栈的另一个操作,例如:选择2,将若干个数据压入栈中之后,程序便又回到了初始的界面,我们可以选择4进行出栈操作。代码如下:

main() {

struct SqStack *q; int number,u=1,n; int i,y,cord; ElemType a; int b[100];

void OutStack(struct SqStack S); void InitStack(struct SqStack *p);

void Push(struct SqStack *p,ElemType x); ElemType Pop(struct SqStack *p); ElemType GetTop(struct SqStack *p); do{

printf(\

printf(\主菜单: 1 初始化顺序栈 2 插入一个元素 3 删除栈顶元素 4 取

第 4 页 共 10页

西安理工大学高科学院课程设计

栈顶元素 5 退出\\n\

printf(\请选择]:\ scanf(\ switch(cord) {

case 1: { //栈的初始化

q=(struct SqStack*)malloc(sizeof(struct SqStack)); InitStack(q); OutStack(q); printf(\

}break; case 2: { //入栈操作 printf(\

printf(\请输入你想插入数据的个数:\ scanf(\

printf(\你所要插入的数据个数为 %d 个\\n\ printf(\

while(u<=number){

printf(\请输入要插入的数据 a=\ scanf(\

printf(\这是你第 %d 个输入的数据: \ printf(\ b[u]=a; Push(q,a); u++; }

printf(\你的输入顺序为:\\n\ printf(\ printf(\

for(n=1;n<=number;n++)

printf(\第-个输入的是: m\\n\ printf(\入栈的顺序:\\n\ printf(\ printf(\ OutStack(q);

printf(\入栈操作结束,现在栈中已经有 %d 个数据,结果见菜单栏上部!\

printf(\ }break; ??? ????

第 5 页 共 10页

本文来源:https://www.bwwdw.com/article/g9ad.html

Top