栈与队列——进制转换

举报
yd_286434480 发表于 2023/04/03 01:37:39 2023/04/03
【摘要】 一、实验目的及要求1.实验目的掌握栈的概念、抽象数据类型和特点,掌握栈的顺序存储结构或者链式存储结构的存储思想及其程序实现,掌握栈对应存储结构的基本操作。2.实验要求用结构体类型描述栈的存储结构,对可能出现的问题预先分析,确定调试步骤和测试方法,编写源程序,尽可能考虑算法的健壮性,对实验中出现的问题进行分析、总结,完成实验报告。3.上机实验内容:实验环境中,编写具体函数实现栈对应存储结构的数...

实验目的及要求

1.实验目的

掌握栈的概念、抽象数据类型和特点,掌握栈的顺序存储结构或者链式存储结构的存储思想及其程序实现,掌握栈对应存储结构的基本操作。

2.实验要求

用结构体类型描述栈的存储结构,对可能出现的问题预先分析,确定调试步骤和测试方法,编写源程序,尽可能考虑算法的健壮性,对实验中出现的问题进行分析、总结,完成实验报告。

3.上机实验内容:实验环境中,编写具体函数实现栈对应存储结构的数制转换,可以通过编写栈的入栈、出栈等操作函数实现,完成实验报告。实验报告中,要求给出实验目的及要求,实验环境(工具、配置等),实验内容(实验方案、实验步骤、设计思路等),实验结果与分析,最后附源程序。

 

二、实验环境(工具、配置等)

1.硬件要求:计算机一台。

2.软件要求:Windows操作系统,编译环境不限,如Dev-Cpp或VC++6.0等。

3.数据结构与算法分析,实验实现的语言不限,建议使用C或者C++语言。

 

三、实验内容(实验方案、实验步骤、设计思路等)

1.实验方案

①学习栈和队列的相关知识,并且观察和总结栈与队列的相关知识,利用栈进行数制转化,同时实现循环队列的。具体如图3-1,3-2

图片1.png

3-2 栈的基本原理

图片2.png

3-2 队列的基本原理

②利用栈进行数制转化,并同时实现循环队列的存放,对其进行一系列的测试。

2.实验步骤

  • 利用栈进行数值转化:

1)首先用类创建一个栈,并在类中编写函数,实现栈的初始化、进栈、出栈、读取栈顶元素、判断是否为满、是否为空等函数,利用这些函数将数据存储到栈内。

2)利用循环,实现一个不断对十进制数取余的功能,并将所求余数存入栈内,取余后将原数除以所要转化的进制数,再次循环这个过程。

3)对入栈结果进行出栈操作,出栈后数字排列顺序为所求得的最终进制转换后的结果。

②实现循环队列:

1)首先用类创建一个队列,并在类中编写函数,实现队列的初始化、进队、出队、判断队列是否为满的功能。

2)要向队列中传入数据,并将队列中的部分数据进行出队,为使队列位置充分利用,形成循环队列,不断修改头指针和尾指针。

3.设计思路

利用栈进行数制转换:

1)首先要知道十进制数转换为其他进制数的转换方式,利用每一次不断相除取余,将每次的余数保留,最终将所有余数逆序输出,得到的就是要求的转换后其它进制数字。

2)利用栈,将每次取余后的余数入栈,最终将栈内元素出栈,得到的最终结果为相除后余数的逆序输出结果,也就是所求的最终进制转换后的结果。

实现循环队列:

1)建立一个循环队列,包含头指针、尾指针和开辟的数组来接收传入的元素,然后不断往队列里面传入数据,当队列元素个数等于队列最大可容纳的元素时,程序自动提示队已满,

2)当出队的时候,头指针移动位置,为前面腾出位置,后面新元素入队,尾指针不断后再添加新的元素。如图3-4所示。最后将出队后的结果打印输出,检查是否正确。

图片3.png

3-3 循环队列

 实验结果与源代码于word查看

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。