您的位置:首页 > 编程语言 > Java开发

Java实现链栈

2016-10-22 18:33 369 查看
用到了之前链表写的结点类,可以在前面的文章中找到,只是定义了数据域和指针域,这里不再写了

接口类:

package com.stack;

import sun.reflect.generics.tree.VoidDescriptor;

public interface IStack {
public void clear();
public boolean isEmpty();
public int length();
public Object peek();//取栈顶元素并返回其值,若为空则返回null
public void push(Object x)throws Exception;//入栈
public Object pop();//出栈
public void display();
}


链栈类:

package com.stack;

import linearList.Node;

public class LinkStack implements IStack {

private Node top;//用到之前写过的结点类,栈顶元素的引用

@Override
public void clear() {
top=null;
}

@Override
public boolean isEmpty() {
return top==null;
}

@Override
public int length() {
Node p=top;
int length=0;
while(p!=null){
p=p.next;
length++;
}
return length;
}

@Override
public Object peek() {
if(!isEmpty()){
return top.data;
}
else{
return null;
}
}

@Override
public void push(Object x) throws Exception {
Node p=new Node(x);
p.next=top;
top=p;
}

@Override
public Object pop() {
if(isEmpty()){
return null;
}
else{
Node p=top;
top=top.next;
return top.data;
}
}

@Override
public void display() {
Node p=top;
while(p!=null){
System.out.printf(p.data.toString()+" ");
p=p.next;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 java