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());
}
}
JAVA实现自己的数组栈和链表栈
最新推荐文章于 2021-02-27 05:21:24 发布