美文网首页
2020-09-01-栈实现

2020-09-01-栈实现

作者: walkerwyl | 来源:发表于2020-09-01 21:01 被阅读0次

    layout: post
    title: "栈实现"
    date: 2020-09-01
    author: "王玉松"
    header-img: ""
    categories: Data Structure
    tags:
    - 栈
    - 顺序栈
    - 链栈


    栈实现

    一、基本数据结构

    栈的实现分成顺序栈和链栈两种形式

    typedef struct Stack
    {
      int top;
      int data[MAXSIZE];
    }Stack;
    
    
    typedef struct Node {
      int data;
      Node *next;
    }Node, *LStack;
    

    二、基本的数据结构操作

    顺序栈和链栈的逻辑操作基本一致, 一些判断条件有所改变.
    相比于顺序栈

    1. 链栈不存在判断栈满的操作;
    2. 链栈的存储密度有所下降;
    3. 链栈进行删除操作时需要释放申请的内存.
    //顺序栈的基本操作
    void InitStack(Stack *S);
    void Push(Stack *S, int value);
    void Pop(Stack *S, int *value);
    void GetTop(Stack *S, int *value);
    void StackLength(Stack *S, int *value);
    void ClearStack(Stack *S);
    int Empty(Stack *S);
    void DisplayStack(Stack *S);
    
    //链栈的基本操作
    void InitStack(LStack S);
    void Push(LStack S, int value);
    void Pop(LStack S, int *value);
    void GetTop(LStack S, int *value);
    void DestroyStack(LStack S);
    void StackLength(LStack S, int *value);
    int Empty(LStack S);
    void DisplayStack(LStack S);
    

    三、从中获得的关于编写C代码的知识

    1. 链栈中的结点定义中使用 typedef struct Node {...}Node, *LStack;
      LStack 类型相当于 Node 型指针, 作为指针类型使用, 区别与一般的 Node.

    2. 需要综合函数的健壮性和可读性, 过多的错误处理会导致函数复杂.

    四、相关代码

    1. 栈实现

    相关文章

      网友评论

          本文标题:2020-09-01-栈实现

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