`
ye_haiqiang
  • 浏览: 88467 次
  • 性别: 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. **应用栈和队列解决实际问题**:通过具体的编程练习,...

    实验二 栈与队列应用 刘立嘉

    实验二 刘立嘉 石家庄铁道大学 算法与数据结构 栈与队列的应用

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

    综上所述,这个实验主要涵盖了数据结构中顺序栈的基本操作,包括栈的定义、初始化、进栈、出栈的实现,以及如何在实际编程中应用这些操作。通过对这些基本操作的理解和实践,学生能够更好地掌握栈这一重要数据结构的...

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

    本实验聚焦于栈在处理逆波兰表达式中的应用,这是一种非常实用的计算方法,尤其在编译原理和算法设计中占据重要地位。我们将深入探讨这一主题,包括其基本概念、实现方式以及如何用C++编程语言来解决这个问题。 ...

    实验五 栈的操作

    在这个实验中,学生将深入理解栈的工作原理,并通过实际操作来熟悉其应用。 栈的基本操作包括: 1. **入栈(Push)**:当一个元素被添加到栈顶时,称为入栈。这是向栈中插入新元素的动作,新元素成为栈顶元素。 2. ...

    数据结构实验——栈的实现及应用

    一、实验目的 1、掌握顺序栈的类型定义...2、掌握顺序栈的简单应用。 二、实验内容 1、利用顺序栈将一个非负的十进制整数N转换为对应的B进制数。 [基本要求]非负的十进制整数N和B都从键盘输入;转换结果从屏幕输出。

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

    3. **实验代码分析**:提供的实验代码使用C语言实现了一个简单的顺序栈,并通过`main`函数实现了括号匹配功能。 - 使用了预定义的栈大小`StackSize`作为数组的长度。 - 定义了栈结构体`SqStack`,其中包含一个元素...

    栈及其应用实验作业.

    栈在计算机科学中有着广泛的应用,特别是在算法实现、编译原理、操作系统等多个领域。 对于本实验而言,我们将重点学习栈的顺序存储结构和链式存储结构。顺序栈是指用一维数组来存储栈中的元素,它的优点是访问速度...

    数据结构实验栈和队列详细实验报告

    栈的应用非常广泛,例如括号匹配、递归调用、深度优先搜索等。 队列是另一种线性数据结构,遵循“先进先出”(FIFO,First In First Out)的原则。队列的操作包括入队(Enqueue)和出队(Dequeue)。新元素在队尾...

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

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

    东北大学 数据结构实验2 栈和队列

    本实验报告的主要内容是栈和队列的应用,旨在掌握栈和队列的概念及工作原理,并运用其原理完成实验题目中的内容。 一、栈的概念和实现 栈是一种后进先出的数据结构,通过压入和弹出操作来实现数据的存储和检索。在...

    数据结构试验2-栈和队列实验报告含源码

    3. 实验设计:描述所使用的数据结构实现,如数组栈、链表队列,以及可能的优化策略,如动态扩容。 4. 源码分析:详细解读源代码,解释每个函数的功能,例如如何实现push、pop、enqueue和dequeue操作。 5. 实验步骤...

    数据结构实验报告-栈进制转换.docx

    通过本次实验,学生能够深入理解栈这一抽象数据类型的特点和应用,并掌握栈的基本操作方法。 #### 核心知识点 1. **栈的概念与特性** - 栈是一种特殊的线性表,只允许在一端进行插入和删除操作。 - 栈的操作遵循...

    实验二栈的应用(数制转换).pdf

    实验二栈的应用(数制转换) 本实验的主要目的是掌握栈的基本操作,包括初始化栈、判栈为空、出栈、入栈等运算,并利用栈的基本操作实现将任意一个十进制整数转化为 R 进制整数。 一、栈的基本操作 栈是一种特殊...

    栈和队列的基本操作实现及其应用

    通过这个实验,我们可以学习到如何用C语言实现基本的栈和队列操作,并将它们应用于实际问题,如回文判断。此外,还能掌握数据结构和算法在程序设计中的重要性,以及如何提高代码的可读性和可维护性。

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

    数据结构实验二栈与队列的应用C++ 数据结构是计算机科学中的一门重要课程,它涉及到数据的存储、组织和使用。栈和队列是数据结构中最基本的两种数据结构,广泛应用于计算机科学和软件工程中。 本实验是关于栈的...

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

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

Global site tag (gtag.js) - Google Analytics