美文网首页
栈的操作

栈的操作

作者: 徐凯_xp | 来源:发表于2021-05-22 17:17 被阅读0次
#include <stdio.h>
#include <stdlib.h>

#define ERROR 0
#define OK 1

typedef struct Stack {
    int *elements;
    int max_size, top_index;
}Stack;

void init(Stack *s, int length_input) {
    s->elements = (int *)malloc(sizeof(int) * length_input);
    s->max_size = length_input;
    s->top_index = -1;
}

int push(Stack *s, int element) {
    if (s->top_index >= s->max_size - 1) {
        return ERROR;
    }
    s->top_index++;
    s->elements[s->top_index] = element;
    return OK;
}

int pop(Stack *s) {
    if (s->top_index < 0) {
        return ERROR;
    }
    s->top_index--;
    return OK;
}

// 请在下面实现输出栈顶函数 top
int top(Stack *s){
    return s->elements[s->top_index];
}


void clear(Stack *s) {
    free(s->elements);
    free(s);
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    Stack *stack = (Stack *)malloc(sizeof(Stack));
    init(stack, n);
    for (int i = 1; i <= m; i++) {
        int opr;
        scanf("%d", &opr);
        if (opr == 0) {
            int element;
            scanf("%d", &element);
            if (push(stack, element)) {
                printf("push success!\n");
            } else {
                printf("push failed!\n");
            }
        } else if (opr == 1) {
            if (pop(stack)) {
                printf("pop success!\n");
            } else {
                printf("pop failed!\n");
            }
        }
        else if(opr == 2){
            printf("%d\n",top(stack));
        }
    }
    clear(stack);
    return 0;
}

相关文章

  • 数据结构-栈(stack)和队列

    比如浏览器的上一步,就是栈的概念,后进先出 栈的插入和删除操作 栈的定义 栈的创建 入栈操作 出栈操作 栈的理解 ...

  • 作业帮做-栈结构验证

    顺序栈操作验证 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握顺序栈的基本操作实现方法。 实验内容 建...

  • php刷leetCode有效的括号

    此题主要考察栈的操作栈(后进先出(LIFO))所有操作都是通过栈顶部的元素来操作的 解题方法 : 遇上(压栈,遇上...

  • 栈和队列

    顺序栈的基本操作: 链栈的基本操作 顺序队的基本操作 链队的基本操作

  • 算法基础——栈与队列

    一、栈 (Stack) 定义:栈是限定在表尾进行插入和删除操作的线性表。 栈的插入操作,叫作进栈,也叫压栈、入栈。...

  • 18. Interview-Data Structure

    1 栈 栈,操作受限的线性表,FILO,栈顶插入和删除,只有两种操作,入栈Push(插入)、出栈POP(删除)。 ...

  • 5.栈Stack

    目录:1.栈的定义2.栈的图解3.栈定义操作4.栈的实现 1. 栈的定义 2. 栈的图解 3. "栈"定义的操作 ...

  • 栈的Java实现

    利用数组实现栈的操作,栈的操作是先进后出。

  • 06-栈

    栈 栈也是一种特殊的线性表,只能在一端进行操作 往栈中添加元素的操作,一般叫做push,入栈 从栈中移除元素的操作...

  • day6栈和队列

    栈 栈是一种特殊的线性表,只能在一端进行操作,往栈中添加元素的操作,一般叫做push,入栈,从栈中移除元素的操作,...

网友评论

      本文标题:栈的操作

      本文链接:https://www.haomeiwen.com/subject/tponjltx.html