青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。

一方面用于学习记录与分享,

另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。

如有侵权,请留言作删文处理。

课程视频链接:

数据结构与算法基础--第05周14--3.5队列的表示和实现3--3.5.2队列的顺序表示和实现2

📚 【Week05】14_队列的顺序表示和实现2

循环队列的类型定义

c++ 复制代码
// 最大队列长度
#define MAXQSIZE 100
Typedef struct{
    // 初始化的动态分配存储空间
    QElemType* base;
	// 头指针,若队列不空,则指向队列头元素
    int front;
    // 尾指针,若队列不空,则指向队尾元素的下一个位置
    int rear;
}SqQueue;

循环队列的操作

循环队列的初始化
c++ 复制代码
Status InitQueue(SqQueue& Q){
    // 分配数组空间
    Q.base = new QElemType[MAXSIZE];
    // Q.base = (QElemType*)
    // malloc(MAXQSIZE* sizeof(QElemType));
    if(!Q.base)
        // 存储分配失败
        exit(OVERFLOW);
    // 头指针尾指针置为 0,队列为空
    Q.front = Q.rear = 0;
    
    return OK;    
}
求循环队列的长度
c++ 复制代码
int QueueLength(SqQueue Q){
	reurn ((Q.rear - Q.front + MAXSIZE)%MAXQSIZE);
}
循环队列的入队
c++ 复制代码
Status EnQueue(SqQueue& Q, QElemType e){
    if((Q.rear + 1)%MAXQSIZE == Q.front)
        // 栈满
        return ERROR;
    // 新元素加入队尾
    Q.base[Q.rear] = e;
    // 队尾指针 + 1
    Q.rear = (Q.rear + 1)% MAXQSIZE;
    
    return OK;
}
循环队列的出队
c++ 复制代码
Status DeQueue(SqQueue& Q, QElemType& e){
    if(Q.front == Q.rear)
        // 栈空
        return ERROR;
    // 保存队头元素
    e = Q.base[Q.front];
    // 队头指针 + 1
    Q.front = (Q.front + 1)% MAXQSIZE;
    
    return OK;
}
取循环队列队头元素
c++ 复制代码
Status GetHead(SqQueue Q){
	// 队列不为空
	if(Q.front != Q.rear)
        // 返回队头指针元素的值,队头指针不变
    	return Q.base[Q.front];
}
相关推荐
wgego4 分钟前
polarctf-web做题笔记
笔记·web安全
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [kernel]workqueue
linux·笔记·学习
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [kernel]usermode_helper
linux·笔记·学习
冬夜戏雪2 小时前
【学习日记】【刷题回溯、贪心、动规】
学习
一只爱做笔记的码农2 小时前
【BootstrapBlazor】移植BootstrapBlazor VS工程到Vscode工程,报error blazor106的问题
笔记·学习·c#
木西2 小时前
人间观察:关于健康、善良与选择的思考
笔记
星轨初途2 小时前
数据结构排序算法详解(2)——选择排序(附动图)
c语言·数据结构·经验分享·笔记·b树·算法·排序算法
xixixi777772 小时前
“C2隐藏”——命令与控制服务器的隐藏技术
网络·学习·安全·代理·隐藏·合法服务·c2隐藏
名字不相符2 小时前
攻防世界WEB难度一(个人记录)
学习·php·web·萌新
陈天伟教授3 小时前
基于学习的人工智能(4)机器学习基本框架
人工智能·学习·机器学习