java实现链栈

前面学习了java实现顺序栈:http://www.cnblogs.com/lixiaolun/p/4644134.html

接下来,学习java实现链栈。

链栈类代码:

package linkedstack;



public class LinkStack {

	

	private Element base;

	private Element top;

	

	class Element

	{

		public Object data;

		public Element next;

	}

	

	/**

	 * 初始化栈

	 * */

	void initStack()

	{

		top = new Element();

		base = new Element();

		top.data=null;

		top.next=base;

		base.data=null;

		base.next=null;

	}

	

	/**

	 * 入栈

	 * */

	void push(Object o)

	{

		Element e = new Element();

		e.data = o;

		if(top.next==base)//第一次入栈操作

		{

			e.next=base;

			top.next=e;

		}else

		{

			e.next=top.next;

			top.next=e;

		}

		

	}

	

	/**

	 * 出栈

	 * */

	void pop()

	{

		if(top.next==base)

		{

			System.out.println("栈中没有元素!");

		}else

		{

			System.out.println("出栈操作"+top.next.data);

			top.next=top.next.next;

		}

	}

	

	/**

	 * 打印栈

	 * */

	void print()

	{

		System.out.print("打印栈:");

		Element temp =top;

		while(temp.next!=base)

		{

			System.out.print(temp.next.data+"\t");

			temp =temp.next;

		}

		System.out.println();

	}

}

链栈测试类代码:

package linkedstack;



public class LinkStackMain {



	public static void main(String[] args) {

		LinkStack lStack = new LinkStack();

		lStack.initStack();

		lStack.pop();

		lStack.push(1);

		lStack.push(2);

		lStack.push(3);

		lStack.push(4);	

		lStack.print();

		

		lStack.pop();

		lStack.pop();

		lStack.print();

		

		lStack.pop();

		lStack.pop();

		lStack.print();

		lStack.pop();

	}



}

  

 

你可能感兴趣的:(java实现)