c语言编写队列元素逆置,数据结构与算法实验—利用栈逆置队列元素.doc
数据结构与算法实验—利用栈逆置队列元素
利用栈逆置队列元素实验报告
通信1204班 谢崇赟
实验名称
利用堆栈将队列中的元素逆置
实验目的
会定义顺序栈和链栈的结点类型。
掌握栈的插入和删除结点在操作上的特点。
熟悉对栈的一些基本操作和具体的函数定义。
会定义顺序队列和链队列的结点类型。
实验内容
编制一个能实现“利用堆栈将队列中的元素逆置”的程序。
问题描述
该程序的功能是实现用堆栈将队列中的元素逆置。该程序包括定义的栈结构类型、队列结构类型以及对每一种栈、每一种队列操作的具体的函数定义和主函数。
问题分析
该实验是基于堆栈和队列知识的基本功能实现。但相较于简单的顺序栈和队列的定义及操作来说,该实验需要进行一定的算法设计,更加考验实习者的实践应用能力。为了程序的可观性,我选用了栈和队列的基本定义和操作函数(栈和队列的定义、出栈和入栈函数、出队和入队函数)进行程序设计。首先,我建立了一个初始队列,将队列的元素逐个出队并逐个压入预先定义好的栈中,然后再定义一个新队列,将栈中的元素逐个出栈并逐个插入新队列中,最后将初始队列和栈释放空间,至此,程序就可以完成了。
实验步骤
1.需求分析?
? ?本演示程序用VC++编写,完成栈的初始化、入栈、出栈,队列的初始化、入队、出队等功能。?
①?输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置。在所有输入中,元素的值都是整数?
②?输出的形式:在所有三种操作中都显示操作是否正确以及操作后栈的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。?
③?程序所能达到的功能:栈的初始化、入栈、出栈、取栈顶元素、队列的初始化、取队头元素、入队、出队。
?④?测试数?据:?
?建立初始队列为1,2,3,4,5?。?
2.概要设计?
?1、?为了实现上述程序功能,需要定义单链表的抽象数据类型:?
typedef struct /*定义队列结构体类型*/
{
DataType data[MAXSIZE];
int front,rear;
}Sequeue;
/*?定义DataType为int类型?*/
typedef?int?DataType;?
/*栈的结点类型*/
#define?MAXSIZE?100??
typedef struct
{
DataType data[MAXSIZE];
int top;
}Seqstack;
/*入队*/
Sequeue *Enqueue(Sequeue *sq,int n)???
/*显示元素*/
void Display(Sequeue *s,int n)
/*取队列的头元素*/
DataType Front(Sequeue *s)
/*入栈:把队列内容入栈*/
Seqstack *Push(Seqstack *p,Sequeue *s,int n)
/*出栈*/
DataType Pop(Seqstack *q)
2、本程序包含5个函数:?
(1)主函数:main()?
(2)入栈函数:Seqstack *Push(Seqstack *p,Sequeue *s,int n)
(3)出栈函数:DataType Pop(Seqstack *q)??????????????????
(4)取队头元素操作:?DataType Front(Sequeue *s)???
(5)入队列操作:?Sequeue *Enqueue(Sequeue *sq,int n)????????????
函数说明
#include
#include
#define MAXSIZE 100
typedef int DataType;
/*队列结构*/
typedef struct
{
DataType data[MAXSIZE];
int front,rear;
}Sequeue;
/*栈结构*/
typedef struct
{
DataType data[MAXSIZE];
int top;
}Seqstack;
/*入队*/
Sequeue *Enqueue(Sequeue *sq,int n)
{
int x,i=1;
printf("请输入队列中的元素:\t");
while(i<=n)
{
scanf("%d",&x);
sq->rear=(sq->rear+1)%MAXSIZE;
sq->data[sq->rear]=x;
i++;
}
return sq;
}
/*显示元素*/
void Displa
c语言编写队列元素逆置,数据结构与算法实验—利用栈逆置队列元素.doc相关推荐
- java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...
转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...
- Python__数据结构与算法——表、栈、队列
目录 一.表 二.栈(后进先出) 三.队列(先进先出) 数据结构使用来描述一种或多种数据元素之间的特定关系,算法是程序设计中对数据操作的描述,数据结构和算法组成了程序.对于简单的任务,只要使用编程语言 ...
- php学数据结构,PHP 程序员学数据结构与算法之《栈》
介绍 "要成高手,必练此功". 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实 ...
- 数据结构学习笔记:利用栈实现进制转换
数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一
- 数据结构与算法实验题 4.2 Who is the strongest
数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...
- 数据结构与算法实验题 6.1 鼹鼠掘土挑战赛
数据结构与算法实验题 6..1 鼹鼠掘土挑战赛 ★实验任务 在潘多拉星的哈利路亚山上,生活着许多鼹鼠矿工,它们同属于潘多拉矿业公司哈利路 亚分公司.尽管在潘多拉星最美丽壮阔的地方工作,是一件十分让普通 ...
- 有趣的数据结构算法9——利用栈完成2进制到8进制的转换
有趣的数据结构算法9--利用栈完成2进制到8进制的转换 解题思路 实现代码 GITHUB下载连接 刚学习完栈的我想试试栈都可以干嘛,于是找到了一个小应用,利用栈完成2进制到8进制的转换.如果大家还不清 ...
- java判断栈中元素数目_Java数据结构与算法-栈和队列
(摘录加总结)------ 栈和队列不属于基础的数据结构,它们都属于线性表. 一.栈 对于栈存储操作元素只能在栈结构的一端进行元素的插入和删除,是一种性质上的线性表结构.按照"先进后出&qu ...
- 队列判空_数据结构与算法——队列的C语言实现
本人原创,有问题请评论,楼主会随时回来查看修改滴~ 觉得有用请点个赞哦~~ 1.顺序队 /** 2020.04:queue 顺序结构-循环队列 判空 判满 求长度 入队 出队 获取队头 获取队尾 */ ...
最新文章
- JavaWeb学习总结第六篇--认识Session机制
- Oracle 数据库修改配置文件sga_target参数的值,sga_target值太小导致数据库服务起不来问题解决,调大sga_target参数方法
- IBM Bluemix体验:Containers持久存储
- 页面 渲染 回流 测试 笔记
- 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希
- PHPCMS V9 按浏览次数排行调用文章
- 【DevOps】从理念到实施
- 旧金山散记(一):第一次在美国打车
- 《Mybatis 手撸专栏》第10章:使用策略模式,调用参数处理器
- 笔记本电脑硬件升级-低成本、大幅提升体验
- pyinstaller编译报错 IsADirectoryError: [Errno 21] Is a directory
- Unity RPG 黑暗之光 问题记录 上 (1-63 地形场景 角色选择 行走 相机跟随、旋转、缩放 任务系统 面板栏 背包系统 状态系统)
- 手把手教你ZPanelX 10.0.0在window下的汉化
- 【基于狂神Docker双响曲】:1、Docker入门及常用部署
- C语言编程猜谜语,简单的一字谜语合集
- GtrLib Chords Pro for Mac(吉他和弦库)
- Linux学习(五):挂载新的硬盘
- 超全,Python 量化金融库汇总!
- java opencv 提取车牌_opencv 学习之 车牌提取
- 基于JSP网上书店系统的设计与实现