• 用链表实现通用堆栈


    用链表实现通用堆栈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备忘录(3)——正则表达式
    JavaScript备忘录(2)——闭包
    JavaScript备忘录(1)——内置类型
    CSS布局:Float布局过程与老生常谈的三栏布局
    地图投影简明笔记
    Three.js源码阅读笔记-5
    js中 set, map区别
    Package.json详解
    node.js 中的package.json文件怎么创建?
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175652.html
Copyright © 2020-2023  润新知