zoukankan      html  css  js  c++  java
  • 栈(stack)

    栈:

    Last in First out 线性表,故又称作LIFO结构。

    顺序存储:空栈设栈顶指针为-1;否则为数组下标。

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #pragma warning (disable:4996)
    #define MAXSIZE 1000
    
    typedef int SElemType;
    
    typedef struct {
        SElemType data[MAXSIZE];
        int top;//栈顶pointer
    }SqStack;
    
    bool push(SqStack* S, SElemType e) {
        if (S->top = MAXSIZE - 1) {
            return 0;
        }
        S->top++;
        S->data[S->top] = e;
        return 1;
    }
    
    bool pop(SqStack* S, SElemType* e) {
        if (S->top == -1) {
            return 0;
        }
        *e = S->data[S->top];
        S->top--;
        return 1;
    }

    当要处理的两组数据具有一定负相关性时,使用两栈共享空间可以比较好的解决问题。

    链栈:

    以头结点处的指针作为栈顶指针,使头节点失去意义。

    链栈的基本操作同单链表,具体有什么区别待学习QAQ

    栈的应用:

    递归:非常自然地可以发现,递归的逻辑与栈的LIFO非常相似。故系统在实现递归时,会使用栈的结构。一般我们不需要自己管理这个栈。

  • 相关阅读:
    Python multiprocessing相关疑问
    Tornado demo3
    WebSockets
    Tornado Demo1---webspider分析
    Python assert断言
    Python学习之--数据基础
    Python学习之--python概要
    Python学习之--函数/生成器/装饰器
    Python学习之文件操作
    Python操作MySQL数据库
  • 原文地址:https://www.cnblogs.com/porest/p/14137073.html
Copyright © 2011-2022 走看看