新手又来请问大神关于堆栈和队列的有关问题了

新手又来请教大神关于堆栈和队列的问题了
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));
   }
}
就写了一个插入  没开编译器 不知道对不对  理解一下思想就好