栈
栈(stack),在计算机科学中,是一种特殊的串列形式的数据结构,它的特殊之处在于只能允许在链接串列或阵列的一端进行加入资料(push)和输出资料(pop)的运算。另外堆叠也可以用一维阵列或连结串列的形式来完成。堆叠的另外一个相对的操作方式称为伫列。
由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。
堆叠数据结构使用两种基本操作:推入(push)和弹出(pop):
推入:将数据放入堆叠的顶端(阵列形式或串列形式),堆叠顶端top指标加一。
弹出:将顶端数据资料输出(回传),堆叠顶端资料减一。
栈的基本特点:
1,先入后出,后入先出。
2,除头尾节点之外,每个元素有一个前驱,一个后继。
取自维基百科
栈的实现可以通过链表和数组
下面通过链表来实现
class mystack
{
private int size;
private Linknode top;
class Linknode //链表
{
int val;
Linknode next;
Linknode(int val)
{
this.val=val;
this.next=null;
}
}
mystack()
{
size=0;
top=null;
}
public void push (int a) //推入元素
{
Linknode node=new Linknode(a);
if(isempty())
top=node;
else
{
node.next=top;
top=node;
size++;
}
}
public int pop() //抛出栈顶元素
{
int a=0;
if(isempty())
print null;
a=top.val;
top=top.next;
size--;
}
public int top() //查看栈顶元素
{
int a=0;
a=top.val;
return a;
}
public boolean isempty() //是否为空
{
return top==null;
}
public int size() //大小
{
return size;
}
}
转载于:https://blog.51cto.com/zhenzhuangde/1733109