栈(stack)可以看做是特殊类型的线性表,访问、插入和删除其中的元素只能在栈尾(栈顶)进行。

队列(queue)表示一个等待的线性表,它也可以看做是一种特殊类型的线性表,元素只能从队列的末端(队列尾)插入,从开始(队列头)访问和删除。

————Java语言程序设计 进阶篇(原书第8版)

栈是先进后出(LIFO),而队列是先进先出(FIFO)。

实现栈这个数据结构的代码

package struct;

//late in first out,LIFO
//泛型
public class MyStack<E>
{
private Node<E> head = null; public MyStack(){} public MyStack(E element)
{
Node<E> newNode = new Node<E>(element);
head = newNode;
} private class Node<E>
{
E element;
Node<E> next; public Node(E element)
{
this.element = element;
}
} //弹出一个元素
public E pop()
{
Node<E> popOut = head;
head=head.next;
return popOut.element;
} //压入一个元素
public void push(E element)
{
Node<E> newNode = new Node<E>(element);
if(head!=null)
{
newNode.next=head;
head=newNode;
}
else
{
head=newNode;
}
} //展示第一个元素
public E peek()
{
return head.element;
} //是否为空
public boolean empty()
{
if(head!=null)
return false;
else
return true;
} public static void main(String[] args)
{
//String类型
MyStack<String> stack1 = new MyStack<String>();
stack1.push("sss");
stack1.push("dddd");
stack1.push("dsds");
System.out.println("begin");
while(stack1.empty()==false)
{
System.out.print(stack1.pop()+" ");
}
System.out.println();
System.out.println("end"); //Integer类型
MyStack<Integer> stack2 = new MyStack<Integer>();
stack2.push(212);
stack2.push(545);
stack2.push(54643);
stack2.push(000);
System.out.println("begin");
while(stack2.empty()==false)
{
System.out.print(stack2.pop()+" ");
}
System.out.println();
System.out.println("end"); //多种类型
MyStack stack3 = new MyStack();
stack3.push(212);
stack3.push("sdad");
stack3.push(54643.787f);
stack3.push(0.98989);
System.out.println("begin");
while(stack3.empty()==false)
{
System.out.print(stack3.pop()+" ");
}
System.out.println();
System.out.println("end"); //展示后进先出
MyStack<String> stack4 = new MyStack<String>("first");
stack4.push("second");
stack4.push("third");
stack4.push("forth");
System.out.println("begin");
while(stack4.empty()==false)
{
System.out.print(stack4.pop()+" ");
}
System.out.println();
System.out.println("end");
} }

在写这个数据结构的过程中,也稍微复习了一下泛型。然后注意到,其实泛型类型是不能用基本类型的,至少要用基本类型的相应包装类。

泛型类型必须是引用类型。不能用像int、double或char这样的基本类型来替换泛型类型。而应该使用对应的Integer、Double或Character来代替。

————Java语言程序设计 进阶篇(原书第8版)

最新文章

  1. Node基础篇(文件操作)
  2. win tomcat
  3. img在div中居中的问题
  4. BZOJ 4581: [Usaco2016 Open]Field Reduction
  5. PAT 1016. 部分A+B (15)
  6. 导航菜单:jQuery粘性滚动导航栏效果
  7. Just a Hook(HDU1698 线段树的简单应用)
  8. Weak is not weak,Strong is not strong
  9. Windows API 进程状态信息函数
  10. JavaScript对象(窗口对象 定时器对象 )
  11. Entify Framewrok - 学习链接
  12. CentOS 6.3 安装 samba 共享(转)
  13. Redux基础
  14. PHP_保留两位小数并且四舍五入_保留两位小数并且不四舍五入
  15. Hybrid APP之Native和H5页面交互原理
  16. vue动态class——实现tag的选中状态
  17. Postman的Post请求方式的四种类型的数据
  18. vim安装自动补全插件
  19. Java第04次实验提纲(面向对象2-继承、多态、抽象类与接口)
  20. bisect维持已排序的序列

热门文章

  1. SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!
  2. FreeBSD 安裝 wget
  3. python decorator 用法
  4. jQuery-动画animate() 方法操作 CSS 属性
  5. jquery datatable 获取当前分页的数据
  6. [Rails学习之路]初识Ruby(二)
  7. bzoj4622 [NOI 2003] 智破连环阵
  8. Struts2 In Action笔记_页面到动作的数据流入和流出
  9. C# 理解FileInfo类的Open()方法
  10. sass安装更新及卸载方法