Java-数据结构练习
Posted 枯木fc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } } //pop out a element public E pop() { Node<E> popOut = head; head=head.next; return popOut.element; } //push a new element into stack public void push(E element) { Node<E> newNode = new Node<E>(element); if(head!=null) { newNode.next=head; head=newNode; } else { head=newNode; } } //show the first element public E peek() { return head.element; } //empty or not public boolean empty() { if(head!=null) return false; else return true; } public static void main(String[] args) { //about 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"); //about 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"); //no matter of the type 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"); //LIFO 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版)
以上是关于Java-数据结构练习的主要内容,如果未能解决你的问题,请参考以下文章