【6】队列的链式存储结构

本文是一位自学计算机的作者分享他在家练习数据结构的过程,特别是关于链式存储队列的实现。他参考了《大话数据结构》和学校教材,尽管尚未正式上过计算机专业课,但已经尝试编写了队列的入队和出队操作。同时,他也分享了初次观看国漫的体验,并寻求代码审查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人双非一本计算机系小白,几个月前从化学天坑跳到计算机,希望本系列能监督我练习敲数据结构的代码(在家真的效率好低QAQ),参考了《大话数据结构》和鄙校的数据结构教材(不敢恭维)。

目前为止我还没有在大学正式上过一节计算机专业课(除了c编基础公共必修),如果有大佬翻到本文并觉得我的代码写的是一坨,提前感谢您在评论区帮我指正!!!

之前一直没咋接触过国漫,昨天第一次看了中国惊奇先生的总集篇,感觉还行,就是画风有点粗糙,稍微有点低俗(不过我也就一俗人),看个乐呵。

本次练习了队列的链式存储结构

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int QElemType;

//创建链队列
typedef struct QNode //链结点
{
    QElemType data;
    struct QNode *next;
}QNode, *QueuePtr;

typedef struct //队列头尾
{
    QueuePtr front, rear;
}LinkQueue;

//入队(在链表尾部插入结点)
Status EnQueue(LinkQueue *Q, QElemType e)
{
    QueuePtr s = (QueuePtr)malloc(sizeof(QNode));
    if(!s)
        return ERROR;
    s->data = e;
    s->next = NULL; //s的下一个结点是空结点
    Q->rear->next = s; //让指针的下一个指向新结点s
    Q->rear = s; //这里我本来想写成 s = Q->rear,后来发现不对劲,因为Q->rear是一个指针,要让它指向s,而不是让s变成它
    return OK;
}

//出队(将头结点的后继节点出队)
Status DeQueue( LinkQueue *Q, QElemType *e)
{
    QueuePtr p;
    if(Q->front == Q->rear)
        return 0;
    p = Q->front->next;
    *e = p->data; //保存头结点的数据
    Q->front->next = p->next; //p->next其实是Q->front->next的->next,也就是指向了出队的结点的下一个结点
    if(Q->rear == p)
        Q->rear = Q->front; //如果队头是队尾,则将rear指向头结点
    free(p);
    return OK;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑶湖女子师专王大珩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值