实验3 栈的应用
一、实验目的
1.了解栈的基本概念,能够熟练运用栈的各种基本操作解决实际问题。
二、实验内容
将十进制整数转换成二至十六进制之间的任一进制数输出。
实验指导:
采用顺序栈来实现。
若待转换的10进制为N,转换目标进制为r,则:⑴ 当N≠0,将N%r压入栈s中;⑵ N/r ⇒ N;⑶ 若N>0,则重复⑴、⑵两步;若N=0,则将栈s的内容依次出栈。
三、实验要求
1.每个同学必须独立完成;
2.程序中的开头部分必须对本程序的总体功能进行注释;程序中每个函数段必须要有注释说明该函数的功能或作用;
3.上机进行调试和修改并填写实验报告;
4.实验报告中的源程序必须调试通过。
5.在体会中描述如下内容:
(1)对算法与程序的区别上的体会。
(2)本次实验过程的体会,是否自己独立完成?最大的困难是什么?自己准备如何解决这个困难?
(3)对本门课程的初步感觉,准备如何进行本门课程的学习。
6.提交实验报告(报告中包含关键源代码)。
参考实验代码:
#define MAXSIZE 100
typedef int ElemType; /*将顺序栈的元素定义为整型*/
typedef struct
{
ElemType data[MAXSIZE];
int top;
}SeqStack;
void InitStack(SeqStack *s)
{
s->top=0;
return 1;
}
int StackEmpty(SeqStack *s)
{
if(s->top==0) return 1;
else return 0;
}
int StackFull(SeqStack *s)
{
if(s->top==m-1) return 1;
else return 0;
}
void Push(SeqStack *s,int x)
{
if (StackFull(s))
{
printf("the stack is overflow!\n");
return 0;
}
else
{
s->data[s->top]=x;
s->top++;
}
}
ElemType Pop(SeqStack *s)
{
ElemType y;
if(StackEmpty(s)
{
printf("the stack is empty!\n");
return 0;
}
else
{
y=s->data[s->top];
s->top=s->top-1;
return y;
}
}
ElemType StackTop(SeqStack *s)
{
if(StackEmpty(s)) return 0;
else return s->data[s->top];
}
void Dec_to_Ocx (int N,int r) /* n是非负的十进制整数,输出等值的r进制数*/
{
SeqStack *S; /*定义一个顺序栈*/
ElemType x;
Int n1=N,n2=r;
Init_SeqStack(S); /*初始化栈*/
if(N<0)
{
printf("\nError,The number must be over 0。");
return;
}
if(!N) Push(S,0);
while(N) /*自右向左产生八进制的各位数字,并将其进栈*/
{
Push(S,N%r); /*余数入栈 */
N=N/r; /*商作为被除数*/
}
printf(“\n十进制数%d所对应的%d进制数是:”,n1,n2);
while(StackEmpty(S)) /*栈非空时退栈输出*/
{
x=Pop(S);
printf(“%d”,x);
}
printf("\n");
}
main( )
{
int n;
printf("Input a number to convert to OCT:\n");
scanf("%d",&n);
Dec_to_Ocx (n);
}
分享到:
相关推荐
实验三 栈的应用 1.实验目的: 熟悉栈的定义,栈的特点以及栈的基本操作。能够根据实际情况选择合适的存储结构,解决实际问题。 2.实验内容: 对任意给定的一个中缀算术表达式,输出等价的后缀形式。
栈和队列的基本操作实验报告 一、实验目的 1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容 题目:试写一个算法,判断依次读入的一个以@为结束符的...
实验二 刘立嘉 石家庄铁道大学 算法与数据结构 栈与队列的应用
(3) 撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。
实现了以下三个问题 1、 实现自己的顺序栈类; 2、 判断输入的字符串中的括号是否配对; 3、 输入一个后缀表达式,并进行求值。
一、实验目的 1、掌握顺序栈的类型定义...2、掌握顺序栈的简单应用。 二、实验内容 1、利用顺序栈将一个非负的十进制整数N转换为对应的B进制数。 [基本要求]非负的十进制整数N和B都从键盘输入;转换结果从屏幕输出。
《数据结构》课程第三次实验报告 实验报告(三) "姓名 " "学号 " "班级 " " "实验名称 "顺序栈的基本操作 "实验日期 " "机房 " " "实验报告 " "1. 说明自己在实验操作过程中遇到的难点及解决方法 " "难点: " "1....
实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的...
数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和...
数据结构实验 栈的应用 多括号匹配等问题 包含实验代码以及步骤等内容
理解栈在程序设计中的应用。 2.实验环境 Visual C++ 6.0 3.实验报告内容 (1)给出栈的顺序存储结构定义。 (2)给出在顺序存储结构上实现栈的入栈操作的基本设计思想,并用C语言实现。 (3)给出在顺序存储结构上...
数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用...
实验内容: 设计一个算法,将一般算术表达式转化为逆波兰表达式,并求逆波兰表达式的值。
2、掌握顺序栈的简单应用。 二、 实验内容 1、实现一个栈数据结构。 2、利用栈实现中缀表达式与前缀表达式的转换。 三、相关内容介绍 标准的表达式如"A+B",在数学上学名叫中缀表达式(Infix Notation),原因是...
3.掌握栈和队列的逻辑结构特点、顺序存储结构、链式存储结构、顺序栈和链栈的结构体类型定义、循环队列和链队列的结构体类型定义、栈和队列在两种存储结构上的各种基本操作的实现算法。 4.将任意十进制数转换为三种...
实验五栈与队列的应用实验报告.docx
1.了解栈和队列的特性。 2. 掌握栈的顺序表示和实现。 3. 掌握栈的链式表示和实现。 4. 掌握队列的顺序表示和实现。 5. 掌握队列的链式表示和实现。 6. 掌握栈和队列在实际问题中的应用。
数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构...