Java-数据结构之栈练习
2024-08-31 01:17:30
栈(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版)
最新文章
- Node基础篇(文件操作)
- win tomcat
- img在div中居中的问题
- BZOJ 4581: [Usaco2016 Open]Field Reduction
- PAT 1016. 部分A+B (15)
- 导航菜单:jQuery粘性滚动导航栏效果
- Just a Hook(HDU1698 线段树的简单应用)
- Weak is not weak,Strong is not strong
- Windows API 进程状态信息函数
- JavaScript对象(窗口对象 定时器对象 )
- Entify Framewrok - 学习链接
- CentOS 6.3 安装 samba 共享(转)
- Redux基础
- PHP_保留两位小数并且四舍五入_保留两位小数并且不四舍五入
- Hybrid APP之Native和H5页面交互原理
- vue动态class——实现tag的选中状态
- Postman的Post请求方式的四种类型的数据
- vim安装自动补全插件
- Java第04次实验提纲(面向对象2-继承、多态、抽象类与接口)
- bisect维持已排序的序列
热门文章
- SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!
- FreeBSD 安裝 wget
- python decorator 用法
- jQuery-动画animate() 方法操作 CSS 属性
- jquery datatable 获取当前分页的数据
- [Rails学习之路]初识Ruby(二)
- bzoj4622 [NOI 2003] 智破连环阵
- Struts2 In Action笔记_页面到动作的数据流入和流出
- C# 理解FileInfo类的Open()方法
- sass安装更新及卸载方法