前一篇文章用了数组对栈进行了简单地实现,本文拟使用linkedList进行实现。在java的connection中,有一个linkedlist子类,俗称为链表,linkedlist,节点Node在java中是这样定义的:
Private static class Node<E>
{
E item;
Node<E> next;
Node<E> perv;
Node(Node<E> prev, E element, Node<E> next)
{
this.item=element;
this.next=next;
this.prev=prev;
}
}
我们借助Node的构思对栈结构进行实现,栈结构的特点是先进后出,之前用数组对其的5个方法empty()、peek()、pop()、push()、search()。进行了简单的实现,我们使用Node思维进行实现,详细结果如下:
class linkedStack{
private int size; //个数
private Node first; //定义头结点
public void push(String str) {
//产生一个新的节点
Node node=new Node(str, null);
//判断栈是否为空
if (size==0) {
this.first=node;
}else {
node.next=this.first; //将头结点作为新结点的下一个
this.first=node;//将新结点作为头结点
}
size++;
}
public String peek() {
return this.first.item;//因为在入栈的时候是倒序放的,故顺序弹栈即可
}
public String pop() {
String str=peek();//获取栈顶位置
this.first=this.first.next;//头结点的下一位作为头结点
size--;
return str;
}
public boolean empty(String str) {
return size==0;
}
public int search(String str) {
Node node=this.first;//初始化,将头结点作为初始位置
for (int i = 0; i < size; i++) {
if (str==node.item||str!=null&str.equals(node.item)) {
return i+1;
}
}
return -1;
}
}