新手又来请教大神关于堆栈和队列的问题了
API里面的Queue和Stack可以分别实现队列和堆栈。
如果不用这两个API,要自己写一个怎么写呢?
求教啊!看了网上的好多思路都想不明白,求指点代码。谢谢啦。
------解决方案--------------------队列是先进先出,堆栈是后进先出。
自己写的时候注意这一点就可以了。
至于存储,可以用链表也可用数组
------解决方案--------------------严重同意2楼 链表中可以直接对第一个元素和最后一个元素操作,实现起来非常方便
------解决方案--------------------呵呵,一个先进先出,一个先进后出。理解了这个不就很好些了吗?
就比如说用数组来实现吧。假如push的时候i都是从小往大写,pop的时间时候队列i从小往大拿,栈从大往小拿。另外,有现成的为什么不用呢
------解决方案--------------------如果你使用list接口的实现类来实现 简单多了
List l;
出栈
l.get(0)
l.remove(0)
入栈
l.add(0,xxx);
队列相似就不说了
如果不用 list的实现类 需要重新定义一个新的类
//就不做封装了 用的时候记得封装
class Node<E>
{
E d;
Node next;
}
class MyList<E>
{
Node head = new Node<E>();
//采用的头插法
public void add(int num,E e)
{
Node p = head.getNext();
for( int i = 0 ; i < num ; i ++ )
{
p = p.getNext();
}
p.setNext(new Node(e));
}
}
就写了一个插入 没开编译器 不知道对不对 理解一下思想就好