思路:
和利用数组模拟栈的实现本质是一样的。从而实现双向链表的先进后出。
class Liststack{
private Listed head=new Listed(null,null,null);
private int maxSize;
public Liststack(int maxSize){
this.maxSize=maxSize;
}
private Listed temp=head;
public boolean isFull(){
Listed temp1=head;
int count=0;
while (temp1.next!=null){
count++;
temp1=temp1.next;
}
return count>=maxSize;
}
public boolean isEmpty(){
return temp==head;
}
public void push(Listed listed){
if(isFull()){
System.out.println("栈满");
return;
}
temp.next=listed;
listed.pre=temp;
temp=listed;
}
public Object pop(){
if (isEmpty()){
throw new RuntimeException("栈空");
}
Object obj=temp.object;
Listed listed=temp.pre;
temp.pre.next=null;
temp.pre=null;
temp=listed;
return obj;
}
public void list(){
if (isEmpty()){
System.out.println("栈空");
}
Listed temp1=head.next;
int count=0;
while (temp1!=null){
count++;
System.out.println("第"+count+"个元素为"+temp1.object);
temp1=temp1.next;
}
}
}
class Listed{
Object object;
Listed pre;
Listed next;
public Listed(Object object){
this.object=object;
}
public Listed(Listed pre,Object object,Listed next){
this.pre=pre;
this.object=object;
this.next=next;
}
}