栈
栈是一种数据结构,数据可以进入到栈中,又可以从栈中出去。是一种基于先进后出的数据结构,是一种只能在一段进行插入和删除操作的特殊线性表,它按照先进后出的原则存储数据,先进入的数据压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。
栈的实现
由于栈是一个逻辑实现的数据结构,所以我们在构建栈时需要引入物理存储结构来实现,即使用链表的形式来实现
入栈的实现
第一个元素进入栈让首节点指向第一个元素,第二个节点则放到第一个元素的前面,以后的元素依次类推
出栈的实现
初始化一个元素记录首节点的下一个节点,使首节点的下一个节点指向记录节点的下一个节点,如果记录节点是一个空节点,则返回空,如果不是空返回记录节点的数据
遍历栈的实现
@Override
public Iterator<T> iterator() {
return new SIterator();
}
private class SIterator implements Iterator{
private Node n;
public SIterator(){
this.n=head;
}
@Override
public boolean hasNext() {
return n.next!=null;
}
@Override
public Object next() {
n = n.next;
return n.item;
}
}
规范增强for循环的遍历
初始化构造函数
public TestStack() {
this.head = new Node(null,null);
this.N=0;
}
测试
public class StackTest {
public static void main(String[] args) {
TestStack<String> stack = new TestStack<>();
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
for (Object o : stack) {
System.out.println(o);
}
System.out.println("----------");
String result = stack.pop();
System.out.println("弹出的元素是"+result);
System.out.println(stack.size());
}
}
|