一、栈的定义
栈:栈是限定仅在表尾进行插入或则删除操作的线性表,对栈来说表尾端我们称之为栈顶,表头端称为栈底。
数据特点:先进后出
二、链栈的定义
链栈:采用链式存储结构实现的栈,通常用单链表来表示链栈。
优点:相比于顺序栈,链栈在计算机内存允许的情况下可以存放不限个数的数据单元,也无需考虑栈满的情况
缺点:相比顺序栈,链栈在实现过程中较为复杂一些
三、链栈的实现
1、存储
private class Node{
public int data;
public Node next;
public Node(){
}
}
Node top;
int Size;
2、操作
入栈:
public boolean Push(int n) {
Node tmp=new Node();
tmp.data=n;
tmp.next=top;
top=tmp;
Size++;
return true;
}
出栈:
public int Pop() {
if(isEmpty()==true)
System.out.println("链栈已空");
Node tmp=top;
top=top.next;
Size--;
return tmp.data;
}
四、整体实现代码
MyLinkStack.java
package Stack;
public class MyLinkStack {
private class Node{
public int data;
public Node next;
public Node(){
}
}
Node top;
int Size;
public MyLinkStack(){
top=null;
Size=0;
}
public boolean isEmpty() {
if(Size==0)
return true;
else
return false;
}
public boolean Push(int n) {
Node tmp=new Node();
tmp.data=n;
tmp.next=top;
top=tmp;
Size++;
return true;
}
public int Pop() {
if(isEmpty()==true)
System.out.println("链栈已空");
Node tmp=top;
top=top.next;
Size--;
return tmp.data;
}
public void Show() {
Node tmp;
for(tmp=top;tmp!=null;tmp=tmp.next)
System.out.print(tmp.data+" ");
System.out.println();
}
}