数据结构与算法实验—利用栈逆置队列元素

利用栈逆置队列元素实验报告

通信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相关推荐

  1. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  2. Python__数据结构与算法——表、栈、队列

    目录 一.表 二.栈(后进先出) 三.队列(先进先出) 数据结构使用来描述一种或多种数据元素之间的特定关系,算法是程序设计中对数据操作的描述,数据结构和算法组成了程序.对于简单的任务,只要使用编程语言 ...

  3. php学数据结构,PHP 程序员学数据结构与算法之《栈》

    介绍 "要成高手,必练此功". 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实 ...

  4. 数据结构学习笔记:利用栈实现进制转换

    数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一

  5. 数据结构与算法实验题 4.2 Who is the strongest

    数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...

  6. 数据结构与算法实验题 6.1 鼹鼠掘土挑战赛

    数据结构与算法实验题 6..1 鼹鼠掘土挑战赛 ★实验任务 在潘多拉星的哈利路亚山上,生活着许多鼹鼠矿工,它们同属于潘多拉矿业公司哈利路 亚分公司.尽管在潘多拉星最美丽壮阔的地方工作,是一件十分让普通 ...

  7. 有趣的数据结构算法9——利用栈完成2进制到8进制的转换

    有趣的数据结构算法9--利用栈完成2进制到8进制的转换 解题思路 实现代码 GITHUB下载连接 刚学习完栈的我想试试栈都可以干嘛,于是找到了一个小应用,利用栈完成2进制到8进制的转换.如果大家还不清 ...

  8. java判断栈中元素数目_Java数据结构与算法-栈和队列

    (摘录加总结)------ 栈和队列不属于基础的数据结构,它们都属于线性表. 一.栈 对于栈存储操作元素只能在栈结构的一端进行元素的插入和删除,是一种性质上的线性表结构.按照"先进后出&qu ...

  9. 队列判空_数据结构与算法——队列的C语言实现

    本人原创,有问题请评论,楼主会随时回来查看修改滴~ 觉得有用请点个赞哦~~ 1.顺序队 /** 2020.04:queue 顺序结构-循环队列 判空 判满 求长度 入队 出队 获取队头 获取队尾 */ ...

最新文章

  1. JavaWeb学习总结第六篇--认识Session机制
  2. Oracle 数据库修改配置文件sga_target参数的值,sga_target值太小导致数据库服务起不来问题解决,调大sga_target参数方法
  3. IBM Bluemix体验:Containers持久存储
  4. 页面 渲染 回流 测试 笔记
  5. 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希
  6. PHPCMS V9 按浏览次数排行调用文章
  7. 【DevOps】从理念到实施
  8. 旧金山散记(一):第一次在美国打车
  9. 《Mybatis 手撸专栏》第10章:使用策略模式,调用参数处理器
  10. 笔记本电脑硬件升级-低成本、大幅提升体验
  11. pyinstaller编译报错 IsADirectoryError: [Errno 21] Is a directory
  12. Unity RPG 黑暗之光 问题记录 上 (1-63 地形场景 角色选择 行走 相机跟随、旋转、缩放 任务系统 面板栏 背包系统 状态系统)
  13. 手把手教你ZPanelX 10.0.0在window下的汉化
  14. 【基于狂神Docker双响曲】:1、Docker入门及常用部署
  15. C语言编程猜谜语,简单的一字谜语合集
  16. GtrLib Chords Pro for Mac(吉他和弦库)
  17. Linux学习(五):挂载新的硬盘
  18. 超全,Python 量化金融库汇总!
  19. java opencv 提取车牌_opencv 学习之 车牌提取
  20. 基于JSP网上书店系统的设计与实现

热门文章

  1. win7计算机中丢失mfc120,mfc120.dll 64位
  2. 机器学习(二十二)——推荐算法中的常用排序算法, Tri-training
  3. ZigBee,ZStack
  4. 机器学习,计算机视觉相关资料
  5. mysql超长sql查询_超长SQL怎么查询?MySQL列长度限制有哪些 | 学步园
  6. Android中Intent传递Object和ArrayListObject对象---笔记
  7. sprint计划会议
  8. app测试之耗电量测试
  9. 在centos 7 下安装图形界面
  10. ant的下载与安装——mybatis学习笔记之预备篇(一)