Stack是一种数据结构.
stack可以通过数组实现,也可以通过链表实现;
遵循先进后出原则;
链表实现stack的优点:
1>操作所需时间与集合大小无关;
2>所需空间与集合大小成正比;
3>可处理任意类型数据
Java实现(头结点):
class Node
{
private database data;
private Node next;
}
class Stack
{
private Node HeadNode;//头结点;
private int size;//当前元素个数;
//栈含量
public int size()
{
return this.size;
}
//判断栈是否为空
public boolean IsEmpty()
{
return HeadNode.next==null;
}
//元素入栈
public void push(int ele)//带头结点,头插法;
{
Node Head=HeadNode;
Node p=new Node();
p.data=ele;
p.next=Head.next;
Head.next=p;
size++;
}
//元素出栈
public int pop()
{
if(this.IsEmpty())
{
return -1;
}
else
{
//不能解引用两次,需创立中间对象;
Node Ini=new Node();
Ini=HeadNode.next;
int p=Ini.data;
HeadNode.next=Ini.next;
size--;
}
}
}
直接插入,无头结点
class Stack
{
private Node TopNode;
private int size;
//堆栈是否为空
public boolean IsEmpty()
{
return TopNode==null;
}
public void push(int ele)
{
//update the top value,but TopNode is the top element;
Node old=TopNode;
TopNode=new Node();
TopNode.data=ele;
TopNode.next=old;
size++
}
//元素出栈
public int pop()
{
if(this.IsEmpty())
{
return -1;
}
else
{
//不使用头结点,在出栈时可不动态申请节点,节省空间;
int p=TopNode.data;
TopNode=TopNode.next;
size--;
return p;
}
}