实验二+栈和队列的应用+

更新时间:2024-05-01 17:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

攀枝花学院数据结构第三次实验

实验二 栈和队列的应用

1、实验目的

(1)熟练掌握栈和队列的结构,以及这两种数据结构的特点;

(2)能够在两种存储结构上实现栈的基本运算,特别注意栈满和栈空的判断条件及描述方法;

(3)熟练掌握链队列和循环队列的基本运算,并特别注意队列满和队列空的判断条件和描述方法;

2、实验内容

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数.

3、实验步骤

(1)理解栈的基本工作原理;

(2)仔细分析实验内容,给出其算法和流程图; (3)用C语言实现该算法;

(4)给出测试数据,并分析其结果; (5)在实验报告册上写出实验过程。

4、实验帮助

算法为:

1) 定义栈的顺序存取结构

2) 分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等) 3) 定义一个函数用来实现上面问题: 十进制整数X和R作为形参 初始化栈

只要X不为0重复做下列动作

将X % R入栈 X=X/R

只要栈不为空重复做下列动作

栈顶出栈 输出栈顶元素

程序代码:

# include # include

typedef struct zan {

int data[100]; int top; }seqstack;

//置空栈

seqstack *intseqstack() {

seqstack *s;

s=(seqstack *)malloc(sizeof(seqstack)); s->top=-1; return s; }

//判断空栈

int empty_seqstack(seqstack *s) { if(s->top==-1)return 1;//为空栈 else return 0; }

//入栈

int push_seqstack(seqstack *s ,int x) {

if(s->top==99)return 0;//栈满不能入栈 else { s->top++;

s->data[s->top]=x; return 1; } }

//出栈

int pop_seqstack(seqstack *s) { int a;

if(empty_seqstack(s))return 0;//栈空不能出栈

else { a=s->data[s->top];//取出栈顶元素,并赋给x s->top--; return a; } }

int main() {

int x,r,c=0; seqstack *s;

s=intseqstack();//初始化,建立空栈

printf(\请输入要转换的整型:\scanf(\

printf(\请输入要转换的:\scanf(\

while(x!=0)//求余入栈 {

push_seqstack(s ,x%r); x=x/r; }

while(!empty_seqstack(s))//出栈 {

c=pop_seqstack(s); printf(\}

printf(\return 0; }

本文来源:https://www.bwwdw.com/article/ameg.html

微信扫码分享

《实验二+栈和队列的应用+.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top