链式栈知识点


本节概述 本节知识点 本节总结

二、链式栈

链式栈则是用单链表方式存储栈,其中的指针方向是从栈顶向下链接。单链表式栈的结点类型定义如下:
struct ListNode  {
        ELEM data;
        ListNode * link;
};
    压入栈顶算法如下:
void stack::Push(float item) {
        ListNode * temp;
        temp = new ListNode;
         // 若无存储空间则异常,程序退出运行
        assert(!temp==NULL);
        temp->data = item;
        temp->link = top;     // 老栈顶指针
        top =temp;              // 新栈顶指针
}
    自单链栈弹出元素算法如下:
ELEM Stack::Pop() {
        // 判栈非空,否则断言栈空异常,程序退出
        assert(!IsEmpty());
        ELEM result = top->data;    // 暂存栈顶内容
        ListNode * temptr;
        temptr = top;       // 老栈顶指针
        top = top->link ;  // 新栈顶指针
        delete temptr;        // 释放空间
        return result;         // 返回的是弹出内容
}