栈大家应该都很熟悉,在Java中有封装好的栈,但是为了熟悉栈的代码实现,我自己写了一个栈:
package com.newer.tw;
public class MyStack {
public Node top;
public void clear()
{
top=null;
}
public void initstack()
{
top=null;
}
public boolean isEmpty()
{
return top==null;
}
public Object peek()//得到栈顶元素
{
if(top==null)
{
System.out.println("栈为空");
return null;
}
System.out.println("当前的栈顶元素为:"+top.element);
return top.element;
}
public Object pop()
{
if(top==null)
{
System.out.println("空指针");
return null;
}
else
{
Node p=top;
top=top.next;
return p.element;
}
}
public void print1()
{
Node p=top;
while(p!=null)
{
System.out.println(p.element);
p=p.next;
}
}
public void push(Object obj)
{
top=new Node(obj,top);
}
}
class Node{
Object element;
Node next;
public Node(Node n)
{
next=n;
}
public Node(Object obj,Node n)
{
element=obj;
next=n;
}
public static void main(String[] args)
{
MyStack m=new MyStack();
m.initstack();
m.push("a");
m.push("b");
m.push("c");
m.push("d");
m.peek();
System.out.println("出栈前");
m.print1();
m.pop();
m.pop();
System.out.println("出栈后");
m.print1();
System.out.println("栈是否为空:"+m.isEmpty());
m.clear();
System.out.println("栈是否为空:"+m.isEmpty());
}
}
测试结果:
当前的栈顶元素为:d
出栈前
d
b
c
a
出栈后
b
a
栈是否为空:false
栈是否为空:true