数组栈及栈的结构 ​​详情​​

链式栈

代码

/**
* 链式栈
* @author 焦焱
*入栈使用头插法
*出栈只需要删除头结点第一个元素
*/
public class LinkStack {
class Entry{
int data;
Entry next;
public Entry(int data) {
this.data = data;
}
public Entry() {
this(-1);
}
}
private Entry head = null;
private int size;
public LinkStack() {
head = new Entry();
}
/**
* 入栈
* @param val 数据
*/
public void push(int val)
{
Entry entry = new Entry(val);
entry.next = head.next;
head.next = entry;
size++;
}
/**
* 出栈
* @return 数据
*/
public int pop()
{
if(isEmpty())
{
return -1;
}
Entry entry = head.next;
head.next = entry.next;
size--;
return entry.data;
}
/**
* 获得栈顶元素
* @return
*/
public int getTop()
{
return head.next.data;
}
/**
* 判断栈是否为空
* @return
*/
public boolean isEmpty()
{
return head.next==null?true:false;
}
/**
* 获得栈的长度
* @return
*/
public int getSize() {
return size;
}
}

测试

public static void main(String[] args) {
LinkStack a = new LinkStack();
for (int i = 0; i < 10 ; i++) {
a.push(i);
}
int x =a.getSize();
for (int i = 0; i < x; i++) {
System.out.println("序号:"+i+" 数据:"+a.pop());

}
}

结果
​​​序号:0 数据:9
序号:1 数据:8
序号:2 数据:7
序号:3 数据:6
序号:4 数据:5
序号:5 数据:4
序号:6 数据:3
序号:7 数据:2
序号:8 数据:1
序号:9 数据:0