- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》课程实验实训报告
实验名称 栈与队列 实验序号 3 学 号姓 名 陈前方 班 级 信管本二 实验日期 2015.11.15 指导教师 金照林 成 绩 一、实验目的和要求
目的:掌握堆栈和队列数据结构描述,学会针对堆栈和队列的基本操作。
要求:掌握C语言结构化程序设计思想,结构数据类型,指针数据类型。 二、实验具体内容及步骤
实现课本中链式堆栈(p64-p66)的基本操作,并编制主函数实际运行验证其正确性。
链式堆栈设计。要求:
用链式堆栈设计实现堆栈,堆栈的操作集合包括:初始化、非空否、入栈、出栈、取栈顶数据元素。
设计一个主函数对链式堆栈进行测试。测试方法为依次把数据元素1、2、3、4、5入栈,然后出栈并在屏幕上显示出栈的数据元素。
定义数据元素的数据类型为如下形式的结构体:
typedef struct{
char taskName[10]; //任务名
int taskNo; //任务号
}DataType;
首先设计一个包含5个数据的测试数据,然后设计一个主函数对链式堆栈进行测试。测试的方法为:依次把5个元素入栈,然后出栈并在屏幕上显示出栈的数据元素。
实现课本中顺序循环队列(p75-p77)的基本操作,并编制主函数实际运行验证其正确性。
对顺序循环队列,常规的方法是使用队尾指针和队头指针,队尾指针用于指示当前的队尾位置下标,队头指针用于指示当前的队头位置下标。现要求:
设计一个使用队头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化、入队列、出队列、取队头元素和判断队列是否为空。
设计一个测试主函数进行测试。 三、实验结果与分析(程序代码按序粘贴在下面,并将运行结果截图)
1.#includestdio.h
#includestdlib.h
typedef int DataType;
typedef struct snode
{
DataType data;
struct snode *next;
} LSNode; /*初始化操作:*/
void StackInitiate(LSNode **head)
/*初始化带头结点链式堆栈*/
{
if((*head = (LSNode *)malloc(sizeof(LSNode))) == NULL) exit(1);
(*head)-next = NULL;
} /*判非空操作:*/
int StackNotEmpty(LSNode *head) /*判堆栈是否非空,非空返回1;空返回0*/
{
if(head-next == NULL) return 0; else return 1;
} /*入栈操作:*/
int StackPush(LSNode *head, DataType x) /*把数据元素x插入链式堆栈head的栈顶作为新的栈顶 */ { LSNode *p; if((p = (LSNode *)malloc(sizeof(LSNode))) == NULL) { printf(内存空间不足无法插入! \n); return 0; } p-data = x; p-next = head-next; /*新结点链入栈顶*/ head-next = p; /*新结点成为新的栈顶*/ return 1; } /*出栈操作:*/
int StackPop(LSNode *head, DataType *d) /*出栈并把栈顶元素由参数d带回*/ { LSNode *p = head-next; if(p == NULL) {
printf(堆栈已空出错!);
return 0;
}
head-next = p-next; /*删除原栈顶结点*/
*d = p-data; /*原栈顶结点元素赋予d*/
free(p); /*释放原栈顶结点内存空间*/
return 1;
} /*取栈顶数据元素操作:*/
int StackTop(LSNode *head, DataType *d) /*取栈顶元素并把栈顶元素由参数d带回*/
{
LSNode *p = head-next;
if(p == NULL)
{
printf(堆栈已空出错!);
return 0;
}
*d = p-data;
return 1;
} /*撤销*/
void Destroy(LSNode *head)
{
LSNo
您可能关注的文档
最近下载
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版).pdf VIP
- 华为ICT大赛云赛道认证考试复习题库(含答案).pdf VIP
- 北师大版六年级数学上册期中期末试题及答案.pdf VIP
- 2021-2022年中国ESG行业研究报告.pptx
- 第一单元峥嵘岁月 第1课情感表达 教学设计 人教版初中美术七年级上册.pdf
- 2024年秋新人教版地理七年级上册课件 4.1 多变的天气.pptx
- 人教版九年级全册英语Unit 14大单元整体教学设计.docx
- 大单元教学中的项目化学习——以五年级上册民间故事单元为例.docx
- 全员专项学习培训试题题库单选、多选试题附答案.doc VIP
- 22G101-3 混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础).docx
文档评论(0)