zoukankan      html  css  js  c++  java
  • 用链表实现通用堆栈

    用链表实现通用堆栈http://blog.csdn.net/douzixinxin/archive/2006/02/24/608035.aspx

    #include <assert.h>
    #include <stdlib.h>

    typedef struct Stack//定义结构体
    {
     int num;
     struct Stack *next;
    }Stack;
    /*尾节点:链表堆栈中最后一个入栈的节点*/
    static Stack *stack;//指向尾节点的指针

    int isempty()//判断是否链式堆栈是否为空
    {
     return stack == NULL;
    }
    int isfull()//该情况不存在
    {
     return 0;
    }
    void push(Stack *newStack)//结构体入栈,加入链表尾节点
    {
     Stack *temp = (Stack *)malloc(sizeof(Stack));
     assert( !isfull() );//链表堆栈是否满
     assert( temp != NULL );//新节点空间分配是否失败
     temp->num = newStack->num;//新节点初始化
     temp->next = stack;//新节点指向旧的尾节点
     stack = temp;//链表堆栈指针指向尾节点
    }
    void pop()//删除尾节点
    {
     Stack *temp;
     assert( !isempty() );//链表堆栈是否空
     temp = stack;//保存旧的尾节点
     stack = temp->next;//链表堆栈指针指向次尾节点
     free(temp);//释放旧的尾节点。注意:一定要释放,否则容易引起内存泄露
    }
    Stack f_top()//返回尾节点,但并不删除
    {
     assert( !isempty() );//链表堆栈是否为空
     return *stack;//返回尾节点,但并不删除
    }
    void del_stack()//删除整个链表堆栈,释放内存空间

     while( !isempty() )
      pop();
    }


  • 相关阅读:
    北漂爱情[柒涩波]
    JavaScript基础知识五
    JavaScript基础知识四
    JavaScript基础知识三
    JavaScript基础知识二
    js内存泄漏
    CSS三列布局之左右宽度固定,中间元素自适应问题
    VScode 前端常用插件推荐
    将博客搬至CSDN
    python网络编程学习笔记(二)
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175652.html
Copyright © 2011-2022 走看看