链式栈
入栈
入栈使用头插法
出栈
出栈则为删除头结点的后一个结点
代码实现
class LinkStack{
class Entry{
int data;
Entry next;
/**
* 无参构造方法
*/
public Entry(){
this.data = -1;
this.next = null;
}
/**
* 有参构造方法
* @param data
*/
public Entry(int data){
this.data = data;
this.next = null;
}
}
private Entry head = null;
public LinkStack(){
this.head = new Entry();
}
/**
* 入栈(头插法)
*/
public void insertHead(int val){
Entry entry = new Entry(val);
entry.next = this.head.next;
this.head.next = entry;
}
/**
* 判断是否为空
* @return
*/
public boolean isEmpty(){
if(head.next == null){
return true;
}
return false;
}
/**
* 出栈(删除头结点后的第一个结点)
*/
public void pop(){
Entry cur = this.head.next;
if(head.next != null){
this.head.next = cur.next;
}
}
/**
* 得到一个元素
* @return
*/
public int getTop(){
//判断是否为空
if(isEmpty()){
return -1;
}
return this.head.next.data;
}
/**
* 打印栈内元素
*/
public void show(){
Entry cur = this.head.next;
while(cur != null){
System.out.print(cur.data+" ");
cur = cur.next;
}
System.out.println();
}
}
public class TastStaticLink {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkStack link = new LinkStack();
for(int i = 0;i<=9;i++){
link.insertHead(i);
}
link.show();
link.pop();
link.show();
System.out.println(link.getTop());
}
}