【转】基础知识系列4--队列(代码还未写)

原文地址:http://www.cnblogs.com/mcgrady/p/3221672.html

上一篇讲了栈,这一篇要总结的是我们常用的队列,我想从以下几个方面进行总结。

1,什么是队列? 
2,队列的存储结构? 
3,队列的常用操作及实现代码?

1.什么是队列

1,首先,队列也是一种特殊的线性表,它是一种操作受限的线性表。它只允许在表的一端进行元素插入,而在另一端进行元素删除。允许插入的一端称为队尾(rear),允许删除的一端称为队头(font)。

2,对于队列,与现实生活中的排队类似,新加入的成员总是在队尾,而排在队列最前面的总是最先离开队列,即先进先出,因此队列也称为先进先出表(FIFO)。

2.队列的存储结构

3.队列的常见操作和代码实现

1,初始化队列

思路:构造一个空队列,即将头指针head和尾指针rear都设置为0。

2,入队

思路:若队列不满,则将数据x插入到尾指针rear指向的位置,然后再将rear加1。

3,出队

思路:若队列不空,则将头指针head加1,并返回被删除的元素。

4,取队头

思路:若队列不空,则返回队头元素。

5,取队长

思路:即尾指针rear-头指针head。

6,判队空

思路:只需要判断头指针head与尾指针是否相等即可

7,判队满

思路:只需判断尾指针与MaxSize是否相等即可

注:在一个非空队列中,头指针始终指向队头元素,而尾指针始终指向队尾元素的下一个位置

代码实现:

时间: 2024-10-25 09:09:36

【转】基础知识系列4--队列(代码还未写)的相关文章

【转】基础知识系列3--栈(代码还未写)

原文地址:http://www.cnblogs.com/mcgrady/p/3213289.html 上一篇总结完了线性表之链表,这一篇文章我们要总结的是栈,我想从以下几个方面来进行总结. 1,什么是栈? 2,栈的存储结构? 3,栈的常见操作及代码实现? 1.什么是栈 首先栈是一种特殊的线性表.那它的特殊性表现在哪里呢?栈是限定在表的一端进行插入和删除运算的线性表,因此,栈也称为后进先出(LIFO)的线性表. 它有很多应用场景,比如食堂中的一叠盘子,我们只能从顶端一个一个地取. 2.栈的存储结构

线程基础知识系列(三)线程的同步

本文是系列的第三篇,前面2篇,主要是针对单个线程如何管理,启动等,没有过多涉及多个线程是如何协同工作的. 线程基础知识系列(二)线程的管理 :线程的状态,控制,休眠,Interrupt,yield等 线程基础知识系列(一)线程的创建和启动  :线程的创建和启动,join(),daemon线程,Callable任务. 本文的主要内容 何谓线程安全? 何谓共享可变变量? 认识synchronized关键字 认识Lock synchronized vs Lock 1.何谓线程安全 多线程是把双刃剑,带

线程基础知识系列(四)线程的同步2 线程通信和Condition变量

本文是系列的第四篇. 线程基础知识系列(三)线程的同步  :同步控制,锁及synchronized 线程基础知识系列(二)线程的管理 :线程的状态,控制,休眠,Interrupt,yield等 线程基础知识系列(一)线程的创建和启动  :线程的创建和启动,join(),daemon线程,Callable任务. 第三篇文章,重点阐述了如何使用锁和同步块对线程间共享可变变量保护,保证只有一个线程可以进入临界区.其实,没有过多的涉及另一个重要的同步概念:线程协作.第三篇中涉及的线程间并没有有效的协调.

线程基础知识系列(二)线程的管理

本篇是线程基础知识系列的第二篇,主要简单江夏线程管理相关知识点. 线程基础知识系列(一)线程的创建和启动:说明了线程的2种创建和启动,join(),daemon线程,Callable 任务. 本文的主要内容 线程的状态 线程的优先级 sleep vs wait 线程的流程控制 Interrupt yield让出你的CPU 1.线程的状态 以<线程基础知识系列(一)线程的创建和启动>这张图,是程序的运行时线程信息截图.有main线程,user Threads,daemon Threads.现在咱

线程基础知识系列(五)认识volatile

线程基础知识系列(四)线程的同步2  :线程的notify-wait通信机制,以及Condition条件变量 线程基础知识系列(三)线程的同步  :同步控制,锁及synchronized 线程基础知识系列(二)线程的管理 :线程的状态,控制,休眠,Interrupt,yield等 线程基础知识系列(一)线程的创建和启动  :线程的创建和启动,join(),daemon线程,Callable任务. 本篇文章主要讨论的关键字是volatile. volatile使用场景 volatile介绍 vol

[C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托

转自http://www.cnblogs.com/zhili/archive/2012/10/22/Delegate.html 引言: 对于一些刚接触C# 不久的朋友可能会对C#中一些基本特性理解的不是很深,然而这些知识也是面试时面试官经常会问到的问题,所以我觉得有必要和一些接触C#不久的朋友分享下关于C#基础知识的文章,所以有了这个系列,希望通过这个系列让朋友对C#的基础知识理解能够更进一步.然而委托又是C#基础知识中比较重要的一点,基本上后面的特性都和委托有点关系,所以这里就和大家先说说委托

基础知识系列?闲言

以前总是觉得... 写一些基础知识的博客·不就是抄书抄书嘛... 东抄西拷-- 并且发现基础知识就是这些内容嘛··· A写的和B写的都差不多·只是细节和深度不太一样··· 1 也曾问自己什么时候能写一点有深度的博客·装下X... 2 刚开始学习也是啃书...不过那时候确实没有经验吧. 3 啃书很吃力的说... 4 5 从中也知道了,人看书也要分境界的: 6 有些话·你读了不一定懂... 7 因为你根本没经历过(也说明了边读书边撸代码的重要性,需要自己去体会)··· 1 总之基础知识还是要好好慢慢

Java并发(基础知识)—— 阻塞队列和生产者消费者模式

1.阻塞队列 BlockingQueue是线程安全的Queue版本,从它的名字就可以看出,它是一个支持阻塞的Queue实现:当向空BlockingQueue请求数据时,它会阻塞至BlockingQueue非空:当向一个已满BlockingQueue插入数据时,线程会阻塞至BlockingQueue可插入. BlockingQueue 的方法以四种形式出现,对于不能立即满足但可能在将来某一时刻可以满足的操作,这四种形式的处理方式不同:第一种是抛出一个异常,第二种是返回一个特殊值(null 或 fa

[C# 基础知识系列]专题十六:Linq介绍

转自http://www.cnblogs.com/zhili/archive/2012/12/24/Linq.html 本专题概要: Linq是什么 使用Linq的好处在哪里 Linq的实际操作例子——使用Linq遍历文件目录 小结 引言: 终于到了C# 3中最重要特性的介绍了,可以说之前所有介绍的特性都是为了Linq而做准备的,然而要想深入理解Linq并不是这个专题可以介绍完的,所以我打算这个专题将对Linq做一个简单的介绍,对于Linq的深入理解我将会后面单独作为一个系列要和大家分享下. 一