JAVA实现自己的数组栈和链表栈

package Stack;
/**
 *用链表来实现栈 
 *
 */
public class LinkedListStack
   
   
    
    {
	public class Node{
		  T data;
		 Node next;
		 public Node(T value,Node next){
			 data=value;
			 this.next=next;
		 }
	}
	//栈的大小
	private int thesize;
	private Node stack;
	
	/*
	 * 判断是否为空链表
	 */
	public boolean isEmpty(){
		return thesize==0;
	}
	
	/**
	 * 出栈
	 */
	public Node pop(){
		if(stack==null)
			return null;
		Node temp=stack;
		stack=stack.next;
		temp.next=null;
		thesize--;
		return temp;
	}
	
	/**
	 * 查看栈顶的元素
	 */
	public Node peek(){
		return stack;
	}
	
	/**
	 * 入栈操作
	 */
	public void push(T  t){
		Node newnode=new Node(t,stack);
		stack=newnode;
		thesize++;
		}

	/**
	 * 栈进行遍历
	 */
	public void searchlist(Node head){
		if(head==null)
			return;
		while(head!=null){
			System.out.println(head.data);
			head=head.next;
		}
	}
	
	
	public static void main(String[] args){
		LinkedListStack stack=new LinkedListStack();
		stack.push(1);
		stack.push(2);
		stack.push(3);
		stack.push(4);
		stack.push(5);
		stack.push(6);
		System.out.println("stack.peek():"+stack.peek());
		stack.searchlist(stack.peek());
		stack.pop();
		System.out.println(stack.peek().data);
	}
}
package Stack;

import java.util.Arrays;

/**
 *数组来实现栈 
 *
 */
public class ArrayStack 
    
    
     
     {
	public Object[] stack;
	public int size;
	//栈的容量
	private static final int DEFAULT_CAPACITY=10;
	public ArrayStack(){
		//初始时候给数组开辟10个元素的空间
		clear();
	}
	private void clear(){
		size=0;
		ensureStack(DEFAULT_CAPACITY);
	}
	/**
	 * 判断是否为空
	 */
	public boolean isEmpty(){
		return size==0;
	}
	
	/**
	 * 返回栈的大小
	 */
	public int size(){
		return size;
	}
	
	/**
	 * 查看栈顶元素
	 */
	public E peek(){
		if(isEmpty())
			return null;
		return (E) stack[size-1];
	}
	
	/**
	 * 删除栈顶元素
	 */
	public E pop(){
		E e=(E) stack[size-1];
		stack[size-1]=null;
		size--;
		return e;
	}
	
	/**
	 * 判断数组链表是否已经到最大值
	 */
	public void ensureStack(int num){
		if(num
     
     
      
      arr=new ArrayStack
      
      
       
       ();
		arr.push(1);
		arr.push(2);
		arr.push(3);
		arr.push(4);
		arr.push(5);
		arr.push(6);
		arr.push(7);
		arr.push(8);
		System.out.println("栈顶的元素"+arr.peek()+" 栈的大小为:"+arr.size());

		
	}
	
	
	
	
}

      
      
     
     
    
    
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值