`
NOthingAj
  • 浏览: 16448 次
社区版块
存档分类
最新评论

栈的简单实现

 
阅读更多

一、头文件、宏及函数声明:

#include <stdio.h>
#include <stdlib.h>
#define MAX 100

typedef enum status {
    success, overflow, underflow, fatal
} Status;

typedef int StackEntry;

typedef struct stack {
    int top;
    StackEntry* entry;
    int stack_size;
} Stack, *StackPtr;

Status Stack_push(StackPtr s, StackEntry item);
Status Stack_Pop(StackPtr s, StackEntry* item);
Status Stack_Top(StackPtr s, StackEntry* item);

 

二、函数实现:

Status Stack_push(StackPtr s, StackEntry item) {
    Status outcome = success;
    if(s->top == MAX-1) {
        outcome = overflow;
    } else {
        s->top++;
        s->entry[s->top] = item;
    }
    return outcome;
}

Status Stack_Pop(StackPtr s, StackEntry* item) {
    Status outcome = success;
    if(s->top == -1) {
        outcome = underflow;
    } else {
        *item = s->entry[s->top--];
    }
    return outcome;
}

Status Stack_Top(StackPtr s, StackEntry* item) {
    Status outcome = success;
    if(s->top == -1) {
        outcome = underflow;
    } else {
        *item = s->entry[s->top];
    }
    return outcome;
}

 

分享到:
评论

相关推荐

    java 栈的实现和应用

    总结来说,Java提供了多种方式来实现和使用栈,无论是简单的`ArrayDeque`还是传统的`Stack`类,都能满足不同场景下的需求。栈作为一种基础数据结构,其灵活性和效率使其在编程中扮演着至关重要的角色。通过熟练掌握...

    基于栈的简易计算器实现(C)

    在编程领域,基于栈的简易计算器是一种常见的实现方式,它主要应用于解析和计算简单的算术表达式。本文将深入探讨如何使用C语言实现这样一个计算器,同时也会涉及栈数据结构、泛型编程以及递归下降分析等核心概念。 ...

    栈实现计算器(C语言实现)

    栈在许多应用场景中都发挥着关键作用,尤其是在实现复杂计算逻辑时,如计算器的运算过程。本篇将详细介绍如何使用C语言实现一个基于栈的计算器。 首先,我们需要理解栈的基本操作:入栈(push)、出栈(pop)、查看...

    栈的实现和应用(实验报告+代码)

    顺序栈通常是在内存中连续分配的一段空间来存储元素,它的优点是操作简单,插入和删除操作(push和pop)的时间复杂度为O(1)。在C++中,我们可以使用动态数组来实现顺序栈。关键在于维护栈顶指针,以便知道当前栈顶...

    用链式栈实现简易计算器

    在这个“用链式栈实现简易计算器”的项目中,开发者利用C++(混入少量C语言特性)构建了一个功能丰富的计算器,支持多种数学运算。下面将详细阐述链式栈的原理及其在实现计算器中的应用。 首先,链式栈与顺序栈...

    简单栈算法实现

    关于入栈、出栈、查看栈顶、判断栈是否为空等等最简单的实现

    利用栈原理实现简易四则运算计算器

    在本项目中,“利用栈原理实现简易四则运算计算器”涉及到以下几个关键知识点: 1. **栈(Stack)**:栈是一种线性数据结构,其中元素的添加和删除操作(称为压入和弹出)只在栈顶进行。栈的基本操作包括压栈(push...

    栈的实现顺序栈

    栈的顺序栈形式,简易的实现,push() pop() top() size() empty()

    栈的实现及应用,六种基本算法

    2、掌握在顺序栈上实现的六种基本算法。 2、掌握顺序栈的简单应用。 利用顺序栈将一个非负的十进制整数N转换为对应的B进制数。 [基本要求]非负的十进制整数N和B都从键盘输入;转换结果从屏幕输出。

    c语言用栈实现计算器功能

    总之,使用C语言和栈数据结构实现计算器功能是一个很好的实践项目,它可以帮助开发者巩固对数据结构、逻辑思维和算法的理解,同时也能提升实际编程能力。在实现过程中,通过不断优化和调试,可以逐步提高代码的效率...

    C例子:栈C语言实现

    本示例将详细介绍如何用C语言实现一个简单的栈。 首先,我们来看`Ex015_Stack2.h`头文件。这个头文件通常包含栈的数据结构定义以及相关的函数声明。在C语言中,我们可以使用结构体来表示栈。结构体可能包含一个数组...

    C++实现用栈实现队列的功能

    标题“C++实现用栈实现队列的功能”表明我们将使用C++编程语言,通过创建两个栈来实现队列的主要功能:入队(enqueue)和出队(dequeue)。这种方法的思路是,一个栈用于入队操作,另一个栈用于出队操作,以此来克服...

    数据结构栈实现进制的转换

    在这个例子中,我们使用了一个简单的循环来实现十进制到十六进制的数据转换。这个循环的时间复杂度为O(logn),其中n是十进制数的值。这个算法的空间复杂度为O(1),因为我们只需要使用一个栈来存储中间结果。 在实现...

    数据结构栈实现表达式求值

    ### 数据结构栈实现表达式求值 #### 一、引言 在计算机科学领域,数据结构是存储和组织数据的一种特殊方式,它不仅能够提高算法的效率,还能够简化复杂问题的解决过程。栈是一种非常重要的线性数据结构,遵循后进先...

    顺序栈入栈出栈实现源码

    ### 顺序栈入栈出栈实现源码解析 #### 一、基础知识介绍 在计算机科学领域,栈(Stack)是一种非常重要的线性数据结构之一,它遵循...同时,代码还提供了简单的用户交互界面,使得用户能够直观地控制栈的操作流程。

    栈原理实现计算器

    本篇将详细介绍如何利用栈的这一特性来实现一个简单的计算器。 首先,我们需要理解栈的基本操作:压栈(push)和弹栈(pop)。压栈是指将元素添加到栈顶,而弹栈则是从栈顶移除元素。栈还支持查看栈顶元素但不移除...

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

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

    利用栈实现逆置单链表

    ### 利用栈实现逆置单链表 在计算机科学中,数据结构是研究的核心之一。其中,链表和栈是非常基础且重要的两种数据结构。本文将详细介绍如何使用栈来实现单链表的逆置。 #### 一、基础知识回顾 在深入探讨之前,...

    数据结构 栈的实现(c语言版)

    以下是一个简单的C语言实现栈的示例: ```c #include #include typedef struct { int* data; int capacity; int size; } Stack; Stack* createStack(int capacity) { Stack* stack = (Stack*)malloc(sizeof...

    顺序栈的表示和实现源码

    顺序栈是一种常见的数据结构,它遵循“后进先出”(LIFO)的原则。在顺序栈中,元素存储在一块连续的内存区域中,通过数组或动态数组来实现。...顺序栈简单易懂,效率高,适用于许多算法和数据处理场景。

Global site tag (gtag.js) - Google Analytics