【队列】链式结构实现队列的基本操作

链队列是队列的一种链式存储结构,它使用单链表作为基础,并限制了元素只能在表头删除及表尾插入。为了方便在表尾进行插入操作,链队列通常配备一个尾指针,指向链表的最后一个节点,使得整个链队列通过头指针就能唯一确定。
摘要由CSDN通过智能技术生成

链队列

队列的链式存储结构简称为链队列,它是限制仅在表头删除和表尾插入的单链表。

显然仅有单链表的头指针不便于在表尾做插入操作,为此再增加一个尾指针,指向链表的最后一个结点。于是,一个链队列由一个头指针唯一确定。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define error(s) printf("%s", s)

typedef char datatype;
typedef struct queuenode
{
     datatype data;
     struct queuenode *next;
}Qnode;

typedef struct
{
     Qnode *front;
     Qnode *rear;
}linkqueue;

//初始化队列
void InitQueue(linkqueue *q)
{
     q->front = q->rear = NULL;
}

//判断队列为空,因为不是用数组来存储队列,而是用堆来管理队列,所以队列不会‘上溢’
int QueueEmpty(linkqueue *q)
{
     return ((q->front == NULL) &&(q->rear  ==NULL));
}

//入队
void EnQueue(linkqueue *q, datatype x)
{
     Qnode *p;
     p = (Qnode *)malloc(sizeof(Qnode));

     assert(p != NULL);

     p->data = x;
     p->next = NULL;

     //队列为空的情况
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值