import java.util.LinkedList;
public class LinkedListDemo2
{
Object pop(LinkedList oo)
{
return oo.removeLast();
}
public static void main(String[] args)
{
LinkedListDemo2 aa = new LinkedListDemo2();
LinkedList a1 = new LinkedList();
System.out.println("-------以下是队列------------");
aa.FiFo(a1);// 先进先出
aa.LiLo(a1);// 后进后出
System.out.println("-------以下是栈------------");
aa.FiLo(a1, aa);// 先进后出
aa.LiFo(a1, aa);// 后进先出
/*
* 其实感觉有点绕,像数据结构里的队列是:先进先出,后进后出。但是在java里,他的先进(addFirst)总是后加的元素在最前面(这与你希望的第一个在前面是相反的
* ,因此给人错觉), 既然是后加的元素在前面,为了完成 先进先出,,,必须调用removeFirst()或者jdk里自带的pop()方法。
*
* 有一个我重写的pop方法,,,不知道各位有没有什么想法想和我说说,或者说我的想法错了,跟我说说。。。。我很期待。。。希望与大家多多交流 . Welcome to add
* my QQ number:599013081.Thanks
*/
}
// 先进先出
public void FiFo(LinkedList a1)
{
a1.addFirst("aaa");// addFirst()方法总是把后加进来的晕元素放在最前面。因此顺序如下所示:
a1.addFirst("bbb");
a1.addFirst("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("队列进入顺序:" + a1.get(i));
}
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("*********************************");
}
// 后进后出
public void LiLo(LinkedList a1)
{
a1.addLast("aaa");// addLast()方法总是把后加进来的元素放在最后面,因此打印结果如下所示:
a1.addLast("bbb");
a1.addLast("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("队列进入顺序:" + a1.get(i));
}
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());// 数据结构正常的思维
}
public void FiLo(LinkedList a1, LinkedListDemo2 aa)
{
// 先进后出
a1.addFirst("aaa");
a1.addFirst("bbb");
a1.addFirst("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("栈进入顺序:" + a1.get(i));
}
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("*********************************");
}
public void LiFo(LinkedList a1, LinkedListDemo2 aa)
{
// 后进先出
a1.addLast("aaa");
a1.addLast("bbb");
a1.addLast("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("栈进入顺序:" + a1.get(i));
}
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1)); // 数据结构正常的思维
}

public class LinkedListDemo2
{
Object pop(LinkedList oo)
{
return oo.removeLast();
}
public static void main(String[] args)
{
LinkedListDemo2 aa = new LinkedListDemo2();
LinkedList a1 = new LinkedList();
System.out.println("-------以下是队列------------");
aa.FiFo(a1);// 先进先出
aa.LiLo(a1);// 后进后出
System.out.println("-------以下是栈------------");
aa.FiLo(a1, aa);// 先进后出
aa.LiFo(a1, aa);// 后进先出
/*
* 其实感觉有点绕,像数据结构里的队列是:先进先出,后进后出。但是在java里,他的先进(addFirst)总是后加的元素在最前面(这与你希望的第一个在前面是相反的
* ,因此给人错觉), 既然是后加的元素在前面,为了完成 先进先出,,,必须调用removeFirst()或者jdk里自带的pop()方法。
*
* 有一个我重写的pop方法,,,不知道各位有没有什么想法想和我说说,或者说我的想法错了,跟我说说。。。。我很期待。。。希望与大家多多交流 . Welcome to add
* my QQ number:599013081.Thanks
*/
}
// 先进先出
public void FiFo(LinkedList a1)
{
a1.addFirst("aaa");// addFirst()方法总是把后加进来的晕元素放在最前面。因此顺序如下所示:
a1.addFirst("bbb");
a1.addFirst("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("队列进入顺序:" + a1.get(i));
}
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("*********************************");
}
// 后进后出
public void LiLo(LinkedList a1)
{
a1.addLast("aaa");// addLast()方法总是把后加进来的元素放在最后面,因此打印结果如下所示:
a1.addLast("bbb");
a1.addLast("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("队列进入顺序:" + a1.get(i));
}
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());
System.out.println("队列出去顺序:" + a1.removeFirst());// 数据结构正常的思维
}
public void FiLo(LinkedList a1, LinkedListDemo2 aa)
{
// 先进后出
a1.addFirst("aaa");
a1.addFirst("bbb");
a1.addFirst("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("栈进入顺序:" + a1.get(i));
}
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("*********************************");
}
public void LiFo(LinkedList a1, LinkedListDemo2 aa)
{
// 后进先出
a1.addLast("aaa");
a1.addLast("bbb");
a1.addLast("ccc");
for (int i = 0; i < a1.size(); i++)
{
System.out.println("栈进入顺序:" + a1.get(i));
}
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1));
System.out.println("栈出去顺序:" + aa.pop(a1)); // 数据结构正常的思维
}
}
输出结果: