|
二、链式栈
链式栈则是用单链表方式存储栈,其中的指针方向是从栈顶向下链接。单链表式栈的结点类型定义如下:
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; // 返回的是弹出内容
}
|