栈Node类
package cn.hbrj.CollectionDemo;
/**
* 泛型类
* @author XuYang
*
* @param <T>
*/
public class StackNode<T> {
private T pDate;//数据元素
private StackNode<T> next;//后继
public T getpDate() {
return pDate;
}
public void setpDate(T pDate) {
this.pDate = pDate;
}
public StackNode<T> getNext() {
return next;
}
public void setNext(StackNode<T> next) {
this.next = next;
}
//构造函数
public StackNode(T data){
pDate=data;
next=null;
}
}
顺序栈
package cn.hbrj.CollectionDemo;
import cn.hbrj.extendsDemo4.Truck;
/**
* 自定义顺序栈
* @author XuYang
*
*/
public class Stack {
public int getM_MaxSize() {
return m_MaxSize;
}
public void setM_MaxSize(int m_MaxSize) {
this.m_MaxSize = m_MaxSize;
}
public int getM_Top() {
return m_Top;
}
public void setM_Top(int m_Top) {
this.m_Top = m_Top;
}
private int [] m_arr;//数组容器
private int m_MaxSize=0;//最大容量
private int m_Top=-1;//为什么是-1?
//栈顶位置 因为栈顶指针总是高于栈顶元素 为了不浪费内存使用-1
//限制数组的存取
public int get(int index){
return m_arr[index];
}
//本顺序栈 模拟存储整数
// public void set(int index,int t1){
// m_arr[index]=t1;//修改元素
// }
//插入元素 说明 程序只是选择性 提供操作数组的功能
public boolean isEmpty(){
return m_Top<0?true:false;//判断栈是否为空
}
public boolean isFull(){
return m_Top>m_MaxSize-1?true:false;
//判断栈是否存满了
}
public Stack(){
}
public Stack(int size){
m_arr=new int[10];
m_MaxSize=size;//最大长度
m_Top=-1;
}
//入栈
public boolean push(int pDate){
if (m_Top==m_MaxSize-1) {
System.out.println("栈满了,再存就栈溢出了");
return false;
}
m_arr[++m_Top]=pDate;
return true;
}
//出栈
public int pop(){
if (m_Top<0) {
return -1;//-1表示什么都没有
}
else {
return m_arr[m_Top--];//获取栈顶元素 把栈顶元素移除
}
}
//获取栈顶元素 但是不出栈
public int peek(){
if (isEmpty()) {
System.out.println("栈是空的");
return -1;
}
return m_arr[m_Top];//获取栈顶元素 元素还在栈中
}
}