【郝斌数据结构自学笔记】35-46_队列的定义、分类_链式队列伪算法的讲解_循环队列伪算法的讲解

来源:互联网 发布:mac怎么下qq游戏大厅 编辑:程序博客网 时间:2024/04/29 09:50

35 _ 队列1 _什么是队列

线性结构的两种常见应用之二 队列

定义:

         一种可以实现“先进先出”的存储结构

36 _ 队列2 _队列的分类   链式队列伪算法的讲解

分类:

         链式队列:用链表实现

         静态队列:用数组实现

37 _ 队列3 _学习循环队列必须要弄清楚的7个问题概述

静态队列

         静态队列通常都必须是循环队列

         循环队列的讲解:

                   1)静态队列为什么必须是循环队列

                   2)循环队列需要几个参数来确定

                   3)循环队列各个参数的含义

                   4)循环队列入队伪算法讲解

                   5)循环队列出队伪算法讲解

6)如何判断循环队列是否为空

7)如何判断循环队列是否已满

 38 _ 队列4 _静态队列为什么必须是循环队列

如果要删除元素(出队),f只能加;如果要增加元素(入队),r只能加。(按照一般数组的方法)。r指向当前队列的下一个位置。

 

39 _ 队列5 _循环队列需要几个参数来确定及其含义的讲解

需要2个参数来确定

front

rear

两个参数不同场合有不同的含义

建议初学者先记住,然后慢慢体会

1)队列初始化

front和rear的值都是零

2)队列非空

front代表的是队列的第一个元素,rear代表的是队列的最后一个有效元素的下一个元素

3)队列空

front和rear的值相等,但不一定是零

40 _ 队列6 _循环队列各个参数的含义

41 _ 队列7 _循环队列入队伪算法讲解

两步完成:

1.将值存入r所代表的位置

2.错误的写法:r=r+1;

正确写法是:r=(r+1)%数组的长度


42 _ 队列8 _循环队列出队伪算法讲解

f=(f+1)%数组的长度


43 _ 队列9 _如何判断循环队列是否为空

如果front于rear的值相等,则该队列就一定为空。

44 _ 队列10 _如何判断循环队列是否已满

若f、r相等,不知道队列到底是空还是满。

预备知识:

         front的值可能比rear大,也可能比rear小,也可能两者相等。

如何判断循环队列是否已满

两种方式:

         1.多增加一个标志参数

         2.少用一个元素【通常使用第二种方式】

                  如何判断队列已满:如果f和r的值紧挨着,则队列已满

                   用C语言伪算法表示就是:

                   if((r+1)%数组长度==f)

                            已满

                   else

                            不满


45 _ 复习 _求链表的长度

46 _ 复习上节课队列知识

队列

         定义:一种可以实现先进先出的存储结构

分类:

静态队列

         链式队列

0 0
原创粉丝点击