栈(stack)

栈(stack)是一种用于存储数据的简单数据结构,与链表和顺序表很相似,最大的区别在于数据的存取操作。栈的插入和删除操作只允许在一端执行,因此把允许操作的一端称为栈顶,不允许操作的称为栈底。插入元素称为入栈(push),删除元素称为出栈(pop),没有元素的栈则是空栈。

在这里插入图片描述

/*
stack
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int *S, top;
void init_stack(int n)
{
   
    S = malloc(n * sizeof(int));
    top = 0;
}
void push(int v) {
    S[top++] = v; }
int pop() {
    return S[--top]; }

int eval(char s[])
{
   
    int i, n=strlen(s);
    init_stack(n);
    for (i=0; i<n; i++)
    {
   
        if (s[i]>='0' && s[i]<='9') push(s[i]-'0');
        if (s[i]=='+') push(pop()+pop());
        if (s[i]=='*') push(pop()*pop());
    }
    return pop();
}

int main()
{
   
    printf("%d\n", eval("1 2 + 3 4 + *"));
    return 0;
}

相关推荐

  1. 数据结构---(Stack)

    2023-12-21 01:56:02       63 阅读
  2. STL之stack

    2023-12-21 01:56:02       56 阅读
  3. c++stack)的介绍

    2023-12-21 01:56:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 01:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 01:56:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 01:56:02       82 阅读
  4. Python语言-面向对象

    2023-12-21 01:56:02       91 阅读

热门阅读

  1. ETL-从1学到100(1/100):ETL涉及到的名词解释

    2023-12-21 01:56:02       54 阅读
  2. TensorFlow 入门:Hello TensorFlow 编程

    2023-12-21 01:56:02       55 阅读
  3. Git初始

    Git初始

    2023-12-21 01:56:02      58 阅读
  4. 在GBASE南大通用ADO.NET 中调用一个存储过程

    2023-12-21 01:56:02       52 阅读
  5. C 语言运算符详解

    2023-12-21 01:56:02       59 阅读
  6. 解决mp4视频无法拖动进度条的问题

    2023-12-21 01:56:02       216 阅读