这几天闲着没事,重新用java语言实现栈这种数据结构。
首先,定义结点
package chainedstack;
//定义节点,及节点方法
public class Node {
private Object data;
private Node next;
public Node() {}
public Node(Object data) {
this.data = data;
}
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
之后,写方法
package chainedstack;
public class chainedstack {
public Object data;
private Node top;
//初始化栈
public chainedstack() {
top=new Node();
}
public chainedstack(Object data) {
top=new Node(data);
}
public void push(Node node) {
if(top.getData()==null) {
top.setData(node.getData());
}else {
node.setNext(top);
top=node;
}
}
//出栈
public void pop() {
if(top.getData()==null) {
System.out.println("栈已空");
}else
top=top.getNext();
}
//打印栈
public void show() {
Node temp=top;
if(top.getData()==null) {
System.out.println("栈为空");
}
else {
while(temp.getNext()!=null) {
System.out.print(temp.getData()+" ");
temp=temp.getNext();
}
System.out.println(temp.getData());
}
}
//判断栈是否为空
public boolean isEmpty() {
if(top.getData()==null) {
return true;
}
return false;
}
//得到栈顶元素
public Node getTop() {
return top;
}
public void setTop(Node top) {
this.top = top;
}
}
测试,唯一问题是栈为空时,继续出栈时会报错,所以我直接让程序输出打印
//测试代码
package chainedstack;
public class demo {
public static void main(String[] args) {
chainedstack stack=new chainedstack();
stack.pop();
System.out.println(stack.isEmpty());
}
}