数据结构(9)队列之链队列

本文介绍了队列作为先进先出的数据结构,并重点讲解了链队列的初始化过程,强调了链队列初始化时设置头结点的重要性。文章提供相关的源代码文件LinkQueue.h、LinkQueue.c和Main.c供读者参考。
摘要由CSDN通过智能技术生成

数据结构(9)队列之链队列

前言

队列同栈一样,本质都是操作受限的线性表。与栈不同的是,队列只允许在一端进行插入操作,在另一端进行删除操作,允许插入的一端称为队尾,允许删除的一端称为队头。从线性表的角度来看,也就是说队列只支持头部删除和尾部插入操作。它的特性就是先进先出,同生活中的排队现象类似。

img_1

链队列的初始化

只要认识到队列的本质是线性表,那么队列的链式存储和线性表的链式存储都是一致的,都需要考虑头结点的问题。如果设置了头结点,那么在初始化链队列时就需要生成一个头结点并为它赋初值;如果不设头结点则直接将队列赋空即可。为了方便操作,此处是设了头结点的。

img_2

其他操作同单链表基本一致,就不写了

源代码

LinkQueue.h
#ifndef LinkQueue_h
#define LinkQueue_h

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define ElemType int

typedef struct QueueNode{
   
    ElemType data;
    struct QueueNode *next;
}QueueNode;

typedef struct LinkQueue{
   
    QueueNode *fount;
    QueueNode *tail;
}LinkQueue;

//初始化
void InitQueue(LinkQueue *Q);

//入队
void EnQueue(LinkQueue *Q,ElemType x);
//出队
void DeQueue(LinkQueue *Q);
//展示
void ShowQueue(LinkQueue *Q);
//获取队首元素
void GetHead(LinkQueue *Q,ElemType *x);
//获取队列长度
void GetLength(LinkQueue *Q);
//清除
void ClearQueue(LinkQueue 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值