Java数据结构:堆栈与队列/Stack Queue(第八周)

阅读: 评论:0

Java数据结构:堆栈与队列/Stack  Queue(第八周)

Java数据结构:堆栈与队列/Stack Queue(第八周)

题目来源:大工慕课 链接
作者:Caleb Sung

关于Stack

  • stack 是堆栈容器, 是一种“先进后出” 的容器。
  • stack 是简单地装饰 deque 容器而成为另外的一种容器。

Stack的Java实现

public class Homework_ds7 {public static void main(String[] args) {// TODO Auto-generated method stubStack sk = new Stack(10);sk.randomFull();System.out.println("随机生成的栈为:");for (int i : sk.getData())System.out.print(i + "  ");System.out.println();System.out.println("出栈:");System.out.println(sk.Pop());System.out.println(sk.Pop());System.out.println("'20' '1'进栈后:");sk.Push(20);sk.Push(1);for (int i : sk.getData())System.out.print(i + "  ");}}class Stack {private int[] data;private int top;public Stack(int max) {top = -1;data = new int[max];}public boolean isFull() {return top == data.length - 1;}public boolean isEmpty() {return top == -1;}public void Push(int x) {if (isFull())System.out.println("栈已满!");elsedata[++top] = x;}public int Pop() {if (isEmpty())throw new RuntimeException("空栈!");elsereturn data[top--];}public void randomFull() {for (int i = 0; i < data.length; i++) {data[i] = (int) (Math.random() * 100);top++;}}public int[] getData() {return data;}
}

关于Queue

  • queue 是队列容器, 是一种“先进先出” 的容器。
  • queue 是简单地装饰 deque 容器而成为另外的一种容器。

Queue的Java实现

public class Homework_ds8_ {public static void main(String[] args) {// TODO Auto-generated method stubQueue q = new Queue();for (int i = 0; i < 10; i++)q.enqueue((int) (Math.random() * 100));System.out.println("随机生成的队列为: ");int[] a = new int[10];a = q.getQueueArray();for (int i = 0; i < 10; i++)System.out.print(a[i] + " ");System.out.println("n出队列 ");for (int i = 0; i < 10; i++) {q.dequeue();System.out.Front() + " ");}}
}class Queue {private int head = 0;private int tail = 0;private int count = 0;private int size = 10;private int[] array = new int[size];public Queue() {}public boolean isFull() {return count == size;}public boolean isEmpty() {return count == 0;}public boolean enqueue(int item) {if (isFull()) {System.out.println("full queue");return false;}array[tail] = item;tail = (tail + 1) % size;count++;return true;}public int dequeue() {if (!isEmpty()) {int item = array[head];head = (head + 1) % size;count--;return item;}return 0;}public int getFront() {if (!isEmpty())return array[head];return 0;}public int[] getQueueArray() {return array;}public void clear() {head = tail = count = 0;}
}

Stack和Queue的异同点

1、栈与队列的相同点:

1.都是线性结构。
2.插入操作都是限定在表尾进行。
3.都可以通过顺序结构和链式结构实现。、
4.插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
5.多链栈和多链队列的管理模式可以相同。

2、栈与队列的不同点:

1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
3.顺序栈能够实现多栈空间共享,而顺序队列不能。

本文发布于:2024-02-04 08:25:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170703048353934.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:堆栈   数据结构   队列   Java   Stack
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23