《数据结构》实验二 栈和队列
更新时间:2024-01-07 03:32:01 阅读量: 教育文库 文档下载
- 数据结构实验二叉树推荐度:
- 相关推荐
《数据结构》实验指导及报告书
2014 / 2015 学年 第 1学期
姓 名: 学 号: 班 级: 指导教师:徐江
计算机科学与工程学院
2014
实验二 栈和队列
一、实验目的
1、掌握栈的结构特性及其入栈,出栈操作;
2、掌握队列的结构特性及其入队、出队的操作,掌握循环队列的特点及其操作。
二、实验内容和要求
1、阅读下面程序,将函数Push和函数Pop补充完整。要求输入元素序列1 2 3 4 5 e,运行结果如下所示。
#include
#define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top;
int stacksize; /*当前已分配的存储空间*/ }SqStack;
int InitStack(SqStack *S); /*构造空栈*/ int push(SqStack *S,ElemType *e); /*入栈*/ int Pop(SqStack *S,ElemType *e); /*出栈*/ int CreateStack(SqStack *S); /*创建栈*/
void PrintStack(SqStack *S); /*出栈并输出栈中元素*/
int InitStack(SqStack *S){
S->base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(ElemType)); if(!S->base) return ERROR;
S->top=S->base;
S->stacksize=STACK_INT_SIZE; return OK; }/*InitStack*/
int Push(SqStack *S,ElemType e){
}/*Push*/
int Pop(SqStack *S,ElemType *e){
}/*Pop*/
int CreateStack(SqStack *S){ int e;
if(InitStack(S))
printf(\ else{
printf(\ return ERROR; }
printf(\ while(scanf(\ Push(S,e); return OK; }/*CreateStack*/
void PrintStack(SqStack *S){ ElemType e;
while(Pop(S,&e)) printf(\}/*Pop_and_Print*/
int main(){ SqStack ss;
printf(\ CreateStack(&ss);
printf(\ PrintStack(&ss); return 0; }
算法分析:输入元素序列1 2 3 4 5,为什么输出序列为5 4 3 2 1?体现了栈的什么特性?
#include
?
#include
#define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef int ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top;
int stacksize; /*当前已分配的存储空间*/ }SqStack;
int InitStack(SqStack *S); /*构造空栈*/ int Push(SqStack *S,ElemType *e); /*入栈*/ int Pop(SqStack *S,ElemType *e); /*出栈*/ int CreateStack(SqStack *S); /*创建栈*/
void PrintStack(SqStack *S); /*出栈并输出栈中元素*/
int InitStack(SqStack *S){
S->base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(ElemType)); if(!S->base) return ERROR; S->top=S->base;
S->stacksize=STACK_INT_SIZE; return OK; }/*InitStack*/
int Push(SqStack *S,ElemType e){ if(S->top-S->base>=S->stacksize) {
S->base=(ElemType*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S->base) return ERROR; S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT; }
*S->top++=e; return OK; }/*Push*/
int Pop(SqStack *S,ElemType *e){ if(S->top=S->base)return ERROR; e= --S->top; return OK;
}/*Pop*/
int CreateStack(SqStack *S){ int e;
if(InitStack(S))
printf(\ else{
printf(\ return ERROR; }
printf(\ while(scanf(\ Push(S,e); return OK; }/*CreateStack*/
void PrintStack(SqStack *S){ ElemType e;
while(Pop(S,&e)) printf(\}/*Pop_and_Print*/
int main(){ SqStack ss;
printf(\ CreateStack(&ss);
printf(\ Pop(&ss, &e); PrintStack(&ss); return 0; }
2、在第1题的程序中,编写一个十进制转换为二进制的数制转换算法函数(要求利用栈来实现),并验证其正确性。 ? 实现代码
#include
正在阅读:
《数据结构》实验二 栈和队列01-07
治疗技术二03-27
文学作品鉴赏方法 - 图文06-24
学校德育工作管理网络图12-21
实验二:铁碳合金平衡组织观察 - 图文11-11
大跨度高速铁路桥梁测试与分析中的技术问题08-20
故乡的竹笋作文500字06-23
朝天二小参加市运动会安全预案12-05
山水画经典之作《富春山居图》的艺术赏析08-26
平安夜的作文(精彩9篇)03-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 队列
- 实验
- 世界咖啡式座谈探索与应用
- Jordy- Dur Dur Detre Un Bebe(做小孩真难)
- 创意简报
- 斯堪的纳维亚的气候与设计
- 华中农业大学生物化学本科试题库 第3章 氨基酸和蛋白质
- 西方政治论文-上交
- 2018-2019-医疗安全管理和风险防范自查报告-优秀word范文(6页)
- 问题在于改变世界(马克思《关于费尔巴哈的提纲》的读书笔记)
- 《风波》读后感
- 石器时代全系列LV1抓宠
- 丰田汽车点火电路
- 管理研究方法论分析报告内容和格式要求2012年版
- 2017-2023年中国芝麻酱行业深度调研报告(目录) - 图文
- 《电工电子学》期末复习题下篇
- 外研版英语2下Module 4 Unit 2 Whats he doing? 教案1
- 南京线切割液厂家
- word,excel,ppt基础题1
- 颅脑损伤护理查房
- 跳水
- 塔计算