`
ye_haiqiang
  • 浏览: 85395 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

实验3 栈的应用

 
阅读更多

实验3 栈的应用

 

一、实验目的

1.了解栈的基本概念,能够熟练运用栈的各种基本操作解决实际问题。

二、实验内容

将十进制整数转换成二至十六进制之间的任一进制数输出。

 

实验指导:

采用顺序栈来实现。

若待转换的10进制为N,转换目标进制为r,则:⑴ 当N0,将N%r压入栈s中;⑵ N/r N;⑶ 若N0,则重复⑴、⑵两步;若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都从键盘输入;转换结果从屏幕输出。

    数据结构栈的实验报告.doc

    《数据结构》课程第三次实验报告 实验报告(三) "姓名 " "学号 " "班级 " " "实验名称 "顺序栈的基本操作 "实验日期 " "机房 " " "实验报告 " "1. 说明自己在实验操作过程中遇到的难点及解决方法 " "难点: " "1....

    实验三 栈和队列的应用.docx

    实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的应用.docx实验三 栈和队列的...

    数据结构_实验三_栈和队列及其应用.pdf

    数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和队列及其应用.pdf数据结构_实验三_栈和...

    数据结构实验 栈的应用(括号匹配等问题)

    数据结构实验 栈的应用 多括号匹配等问题 包含实验代码以及步骤等内容

    栈的操作及应用

    理解栈在程序设计中的应用。 2.实验环境 Visual C++ 6.0 3.实验报告内容 (1)给出栈的顺序存储结构定义。 (2)给出在顺序存储结构上实现栈的入栈操作的基本设计思想,并用C语言实现。 (3)给出在顺序存储结构上...

    数据结构实验三栈和队列及其应用.pdf

    数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用.pdf数据结构实验三栈和队列及其应用...

    数据结构实验代码(C++)栈的应用

    实验内容: 设计一个算法,将一般算术表达式转化为逆波兰表达式,并求逆波兰表达式的值。

    栈和队列的应用实验 利用栈实现中缀表达式与前缀表达式的转换

    2、掌握顺序栈的简单应用。 二、 实验内容 1、实现一个栈数据结构。 2、利用栈实现中缀表达式与前缀表达式的转换。 三、相关内容介绍 标准的表达式如"A+B",在数学上学名叫中缀表达式(Infix Notation),原因是...

    C++数据结构实验二:栈与队列的应用

    3.掌握栈和队列的逻辑结构特点、顺序存储结构、链式存储结构、顺序栈和链栈的结构体类型定义、循环队列和链队列的结构体类型定义、栈和队列在两种存储结构上的各种基本操作的实现算法。 4.将任意十进制数转换为三种...

    实验五栈与队列的应用实验报告.docx

    实验五栈与队列的应用实验报告.docx

    栈实验报告

    1.了解栈和队列的特性。 2. 掌握栈的顺序表示和实现。 3. 掌握栈的链式表示和实现。 4. 掌握队列的顺序表示和实现。 5. 掌握队列的链式表示和实现。 6. 掌握栈和队列在实际问题中的应用。

    数据结构实验报告—栈及其应用.pdf

    数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构实验报告—栈及其应用.pdf数据结构...

Global site tag (gtag.js) - Google Analytics