Java-数据结构之栈练习

栈(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版)

转载于:https://www.cnblogs.com/kumu/p/6714994.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值