数据结构实验任务调度c语言,数据结构实验任务指导书.doc

目录

前言1

实验一 熟悉编程环境4

实验二 顺序表的基本操作5

实验三 单链表的基本操作8

实验四 栈的基本操作11

实验五 队列的基本操作13

实验六 二叉树建立及遍历操作15

实验七 二叉树的应用程序设计16

实验八 图的建立及遍历操作17

实验九 图的最小生成树算法的实现20

实验十 图的最短路径算法的实现21

实验十一 顺序表查找算法的实现23

实验十二 二叉排序树的查找算法实现25

实验十三 哈希表的应用实现26

实验十四 插入排序算法的实现27

实验十五 交换排序算法的实现28

实验十六 选择排序算法的实现29

综合实践:数据结构课程设计30

前言

为了同学能够更好的完成实验任务,达到本课程的设置目的,锻炼自己的实践动手能力,请大家认真阅读本前言内容,希望能够给你一定的学习启示。

关于实习步骤的要求和建议

从以往的教学经验来看,在初学阶段执行严格的实验步骤规范(包括上机操作规范),机时利用率会大大提高,有助于养成良好的编成风格,培养严谨、科学、高效的工作方式。

在以往的教学实践中,学生经常出现的问题:

(1)实验时间不够,部分学生花两个学时不能找出程序错误(有的同学甚至一个错误都没有找出),一无所获,浪费机时。

(2)没有达到实验要求,在两个机时中没有完成实验任务,不可能体会数据结构的精髓,更不能很好地掌握内容,没有锻炼好独立思考、设计能力,最终没有达到本课程的要求。本课程独立32学时的实验是验证和考量学生对计算机软件设计基本能力的重要实践环节,独立做好每个实验是本课程的最基本要求。

(3)高级程序设计能力亟待提高,高级语言程序设计(C语言程序设计)是本门课程的编程基础,很多同学编程基础不过关,将大量时间浪费在以往知识的练习中,甚至有个别同学只会编写Hello Word程序,基本功太差。

(4)没有严谨 的实验作风,有的学生不屑于按实习步骤规范去做,甚至对于实习步骤的要求和建议看都不看一遍,认为那是浪费时间,这是及其害的。实习步骤规范不但可以培养科学化的工作作风,而且还能有效地避免错误。

本课程具体的要求如下:

认真独立完成每个必做实验,达到预期效果;实验过程中有任何问题及时与指导教师联系,在规定时间内没有完成实验的学生利用课余时间完成实验,实验过程中可以与同学相互交流,但实验任务必须独立完成。

高级语言程序设计不过关的同学,利用课余时间进行自学,必须达到能够熟练使用高级语言进行程序设计。

每次实验中的程序自己要保存好,为后继的实验奠定基础。本课程中的很多实验要使用到以前实验的代码,要保存好自己的代码(做好注释,注意书写格式),否则,不可能在两个机时之内完成实验任务。最后实验完成后由班长和学习委员将所有同学的实验代码以实验名称和姓名为目录,收齐后交给指导教师。

认真书写实验报告,实验报告要自己独立书写,书写要认真、细致,体现科学严谨的工作作风。

实验步骤规范如下:

(1)问题分析与系统的结构设计:

充分地分析和理解问题本身,弄清要求作什么,限制条件是什么。按照以数据结构为中心的原则划分模块,即定义数据结构及其在这些结构之上的操作,使得对数据结构的存取通过这些操作加以实现。在这个过程中,要综合考虑系统功能。要考虑系统结构清晰、合理、简单并且易于调试。最后写出每个子程序(过程或函数)的规格说明,列出它们之间的调用关系,实验复杂是必须先使用流程图理解整个程序的设计思想和方法,这样便完成了系统结构设计。

(2)详细设计和编码

详细设计的目的是对子程序(过程或函数)的进一步求精。用 IF 、WHILE和赋值语句等,以及自然语言写出算法的框架。利用自然语言的目的是避免陷入细节。在编码是,可以对详细设计的结果进一步求精,用高级语言表示出来。

程序的每一行最好不超过 60 个字符。每个子程序(或过程、函数)通常不要太长,以 40 行为宜。子程序(或过程、函数)包含的程序行数太多,易于造成理解的困难。控制 IF 、WHILE 等语句的连续嵌套的深度。程序的目的性必须明确。对每一段程序完成的作用,除非常明显的除外,都应加以注释。这会对程序的调试提供很多方便。另外,根据情况可以设立若干调试点,即输出若干信息,用于验证和你的设想是否一致。另外,对于输入输出语句,必须对它们的作用加以说明。否则,在调试程序时,无法了解系统需要输入说明,系统输出的又是什么。程序的书写,必须按照一定的规范。

(3)上机准备和静态检查

上机准备:

高级语言文本

熟悉机器的用户手册,熟悉常用的命令。

准备调试的工具,考虑调试方案。如果机器上没有现成的调试工具可供利用,可以自己先设计一些以供使用。

静态检查

自己用一组数据手动执行程序;或同同学一起阅读自己的程序,以全面地了解该程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include #include #include //队列最大长度 #define MAX_QUEUE 1024 //偷懒,就用静态队列了 static int mQueue[MAX_QUEUE]; //队列插入 void InsertData(int **Front, int **Rear) { if (*Rear + 1 == *Front && (*Rear + 1 - MAX_QUEUE != *Front)) { //当队列数据已满,返回 puts("Queue Size Overflow!\n"); return; } else if (*Rear - mQueue > MAX_QUEUE) { //实现的是类似循环队列,但由于是静态线性队列(数组) //而不是用链表来实现的,所以到静态队列(数组)尾部,尾指针自动指向(数组)头部 *Rear = mQueue; } puts("Input Data:"); scanf("%d", *Rear); //输入数据后,尾指针后移 *Rear += 1; } //从头指针删除一个队列中的数据 void DeleteData(int **Front, int **Rear) { if (*Front == *Rear) { //头指针尾指针重合,队列空,不能删除,返回 puts("Queue Empty!\n"); return; } else if (*Front - mQueue > MAX_QUEUE) { //参考 Rear *Front = mQueue; } //从头指针删除一个数据 *Front += 1; } //显示队列数据 void ShowData(int **Front, int **Rear) { int *temp; for (temp=*Front; temp!=*Rear; temp++) { printf("%d --> ", *temp); } puts("\n"); } void usage(void) { puts("1. Insert Data"); puts("2. Delete Data"); puts("3. Show Data"); } int main(int argc, char **argv) { //头指针,尾指针 //队列的一个特性 First in first out FIFO int *pFront, *pRear; int op_code; //初始化队列,头指针和尾指针此时指向的地址相同 pFront = pRear = mQueue; while (1) { usage(); scanf("%d", &op_code); switch (op_code) { case 1: printf("%p\n", pFront); printf("%d\n", *pFront); InsertData(&pFront, &pRear); break; case 2: DeleteData(&pFront, &pRear); break; case 3: ShowData(&pFront, &pRear); break; default: break; } } return 0; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值