王道计算机考研 数据结构C语言复现-第六章-队列

 这篇文章收录了王道考研课程中涉及的数据结构的所有代码。此外,本博客可能会添加一些额外的代码(不仅限于王道考研),因为408考试中会频繁考察一些冷门的知识点,所以这篇博客会涵盖所有相关的代码。这也是我数据结构的第一轮复习,希望能与大家共同进步。由于博客篇幅的限制,可能无法一次性包含所有内容,欢迎指出代码错误部分!!!

你想要的都在下面!!!

// @FileName  :DuiLie.c
// @Time      :2023/8/14 20:49
// @Author    :YKW
# include <stdio.h>
# include <stdbool.h>
# include <stdlib.h>
//队列(Queue)只允许在一段进行插入(入队、队尾),在另一端删除的线性表
//顺序队列
#define MaxSize 10
typedef struct{
    int data[MaxSize];
    int front,rear;
    //int size;//计数变量,判断队列空满,插入加一,删除减一
    //int tag;//每次删除,=0,每次插入,=1
    //则队满:front==rear&&tag==1;
    //队空:front==rear&&tag==0;
}SqQueue;
void InitQueue(SqQueue *Q){
    Q->front=Q->rear=0;
}
//入队
bool EnQueue(SqQueue *Q,int x){
    if((Q->rear+1)%MaxSize==Q->front)//队列满,报错
        return false;
    Q->data[Q->rear]=x;
    Q->rear=(Q->rear+1)%MaxSize;//循环队列,牺牲一个储存空间,变成环状

}
//出队
bool DeQueue(SqQueue *Q,int x){
    if(Q->rear==Q->front)//判断队空
        return false;
    x=Q->data[Q->front];
    Q->front=(Q->front+1)%MaxSize;//队头指针后移
    return true;
}
//获得队头元素值,返回x
bool GetHead(SqQueue *Q,int x){
    if(Q->rear==Q->front)//判断队空
        return false;
    x=Q->data[Q->front];
    return true;
}
/*
 * 队满(Q->rear+1)%MaxSize==Q->front;
 * 队空Q->rear==Q.front;
 * */

//链队列
typedef struct LinkNode{//链式队列节点
    int data;
    struct LinkNode *next;
}LinkNode;
typedef struct {///链式队列
    LinkNode *front,*rear;//对头/尾指针
}LinkQueue;
void InitQueue2(LinkQueue *Q){
    Q->front=Q->rear=(LinkNode*)malloc(sizeof(LinkNode));
    Q->front->next=NULL;
}
//入队
void EnQueue2(LinkQueue *Q,int x){
    LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
    s->data=x;
    s->next=NULL;
    Q->rear->next=s;
    Q->rear=s;
}
//出队
bool DeQueue2(LinkQueue *Q,int *x){
    if(Q->front==Q->rear)//空队
        return false;
    LinkNode *p=Q->front->next;
    *x=p->data;//x返回被删除的元素
    Q->front->next=p->next;
    if(Q->rear==p)
        Q->rear=Q->front;
    free(p);
    return true;
}


//双端队列:两端均可插入删除
//输入(输出)受限的双端队列

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 23:36:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 23:36:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 23:36:05       87 阅读
  4. Python语言-面向对象

    2024-01-06 23:36:05       96 阅读

热门阅读

  1. 工具:Peach

    2024-01-06 23:36:05       59 阅读
  2. Apache License version 2 开源协议 是什么

    2024-01-06 23:36:05       49 阅读
  3. 详解Keras:keras.preprocessing.image

    2024-01-06 23:36:05       54 阅读
  4. cookie和session的区别

    2024-01-06 23:36:05       56 阅读
  5. Qt3D 输入类处理鼠标键盘动作

    2024-01-06 23:36:05       59 阅读
  6. Hive表加工为知识图谱实体关系表标准化流程

    2024-01-06 23:36:05       40 阅读
  7. 【多线程】

    2024-01-06 23:36:05       66 阅读
  8. C++第五天

    2024-01-06 23:36:05       48 阅读
  9. Binius:助力ZK行业发展

    2024-01-06 23:36:05       57 阅读