栈,队列,优先级队列

---恢复内容开始---

一.栈

1.栈:先进后出,后进先出,每次访问一个数据项,即最后一个添加的数据项(每次添加的数据放到最后)。数据入栈和出栈的时间复杂度O(1),栈不需要移动和比较数据。

2.代码

 1 public class Stack {
 2     private int maxsize;
 3     private int[] arr;
 4     private int top;
 5
 6     public Stack(int s){
 7         maxsize = s;
 8         arr = new int[maxsize];
 9         top = -1;
10     }
11
12     public void push(int s){
13         arr[++top] = s;
14     }
15
16     public int delete(){
17         return arr[top--];
18     }
19
20     public boolean isEmpty(){
21         return top == -1;
22     }
23
24     public boolean isFull(){
25         return top == maxsize-1;
26     }
27
28     public static void main(String[] args) {
29         Stack s = new Stack(10);
30         s.push(5);
31         s.push(10);
32         s.push(2);
33         s.push(4);
34         while(!s.isEmpty()){
35             int a = s.delete();
36             System.out.println(a);
37         }
38     }
39
40 }

二.队列

1.队列:先进先出,每次操作一个数据项,先进去的。数据放到最后,从最前面开始拿,所以需要两个标记,队头和队尾。

    为了解决队列不满,又不能添加数据的问题,采用环绕式处理。

2.代码:

---恢复内容结束---

时间: 2024-10-18 03:02:22

栈,队列,优先级队列的相关文章

java面向对象的栈 队列 优先级队列的比较

栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一个特点就是访问是受到限制的,即在特定时刻只有一个数据项可以被读取或者被删除,但是所谓的移除并不是真的删除,数据项依然在这些数据结构中,只不过因为指针已经指向其他数据项,没有办法访问到,当添加新的数据项时,当初移除的数据项被替代从而永远消失. 栈 队列 优先级队列的模拟思想 1.栈:栈遵循先进后出(F

STL学习系列七:优先级队列priority_queue容器

1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了.这样,我们就引入了优先级队列 这种数据结构. 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一

STL源码笔记(15)—堆和优先级队列(二)

STL源码笔记(15)-堆和优先级队列 优先级队列的源码实现基于heap的操作,底层容器默认是vector. 优先级队列简介 优先级队列跟队列类似,一端插入一端删除,不同的是,优先级队列的元素入队后会根据其优先级进行调整,默认情况下优先级高的将优先出队,在SGI STL中,优先级队列的功能保证由heap实现:stl_heap.h中,heap的分析见:STL堆源码分析 优先级队列构造函数 默认情况下,优先级队列使用vector作为底层容器,使用less作为比较函数,其在源码中的定义声明如下: te

Redis实现优先级队列

实现优先级队列 优先级队列是什么? 优先级队列 是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. redis如何实现优先级队列 关键命令:BRPOP(从队列右边弹出)/BLPOP(从队列左边弹出) BRPOP/BLPOP和RPOP/LPOP命令类似,都是从队列里弹出一个元素,只不过BRPOP在队列没有新元素的时候会阻塞,它接受一个timeout参数,用来表示阻塞的时间,当超过该时间还是未获得新元素则会返回nil,如果为0则表示一直阻塞下去.除此之外它还可以接受多个KE

队列Queue、栈LifoQueue、优先级队列PriorityQueue

队列:队列是先进先出. import queue q = queue.Queue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print(q.get()) print(q.get()) print(q.get()) 栈:栈是先进后出. import queue q = queue.LifoQueue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print(q.get())

优先级队列与堆排序

转自:http://www.cnblogs.com/yangecnu/p/Introduce-Priority-Queue-And-Heap-Sort.html 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话. 在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象.这种数据结构就是优先级队列(Pri

priority_queue 优先级队列

priority_queue 优先级队列是一个拥有权值概念的单向队列queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元素优先权要高于后进入队列的元素).在计算机操作系统中,优先级队列的使用是相当频繁的,进线程调度都会用到.在STL的具体实现中,priority_queue也是以别的容器作为底部结构,再根据堆的处理规则来调整元素之间的位置.下面给出priority_queue的函数列表和VS2008中priority

Java 模拟队列(一般队列、双端队列、优先级队列)

队列: 先进先出,处理类似排队的问题,先排的.先处理,后排的等前面的处理完了,再处理 对于插入和移除操作的时间复杂度都为O(1).从后面插入,从前面移除 双端队列: 即在队列两端都能够insert和remove:insertLeft.insertRight.removeLeft.removeRight 含有栈和队列的功能,如去掉insertLeft.removeLeft,那就跟栈一样了.如去掉insertLeft.removeRight.那就跟队列一样了 一般使用频率较低,时间复杂度 O(1)

java数据结构与算法值优先级队列

一.优先级队列 什么是优先级队列:优先级队列是一种比栈和队列更加常用的一种数据结构.在优先级队列中,数据项按照关键字的值有序.数据项插入到队列中时,会按照顺序插入到合适的位置,用来保证队列的顺序. 生活中的例子,假设你有若干封件,你最急需要处理的文件就放在所有邮件的 顶部,如果不急需处理的文件就放放在下面. 参考代码: package edu.structure.queue; public class PriorityQ { private int maxSize; private int[]