当前位置:网站首页>C语言队列
C语言队列
2022-07-07 04:33:00 【pythoncjavac++】
目录
队列有关概念
首先队列最大的特点是“先进先出”,只能在一端插入,另一端删除,插入的一端是队尾,删除的一端是队头。
队列的创建
typedef int QDataType;
typedef struct QueueNode
{
struct QueueNode* next;
QDataType data;
}QNode;
typedef struct Queue
{
QNode* head;
QNode* tail;
}Queue;
这里要创建两个结构体,因为这里要记录一下他的头和尾,这样可以方便进行插入和删除。
队列的初始化
void QueueInit(Queue* pq)
{
assert(pq);
pq->head = pq->tail = NULL;
}
队列的插入
void QueuePush(Queue* pq, QDataType x)
{
assert(pq);
QNode* newnode = (QNode*)malloc(sizeof(QNode));
if (newnode == NULL)
{
printf("malloc fail\n");
exit(-1);
}
newnode->data = x;
newnode->next = NULL;
if (pq->tail == NULL)
{
pq->tail = pq->head = newnode;
}
else
{
pq->tail->next = newnode;
pq->tail = newnode;
}
}
队列的删除
void QueuePoq(Queue* pq)
{
assert(pq);
assert(!QueueEmpty(pq));
if (pq->head->next == NULL)
{
free(pq->head);
pq->head = pq->tail = NULL;
}
else
{
QNode* cur = pq->head->next;
free(pq->head);
pq->head = cur;
}
}
取队列的头
QDataType QueueFront(Queue* pq)
{
assert(pq);
assert(!QueueEmpty(pq));
return pq->head->data;
}
取队列的尾
QDataType QueueBack(Queue* pq)
{
assert(pq);
assert(!QueueEmpty(pq));
return pq->tail->data;
}
队列元素的数量
int QueueSize(Queue* pq)
{
assert(pq);
int size = 0;
QNode* cur = pq->head;
while (cur)
{
size++;
cur = cur->next;
}
return size;
}
判断队列是否为空
bool QueueEmpty(Queue* pq)
{
assert(pq);
return pq->head == NULL;
}
销毁队列
void QueueDestory(Queue* pq)
{
assert(pq);
QNode* cur = pq->head;
while (cur)
{
QNode* aq = cur->next;
free(cur);
cur = aq;
}
pq->head = pq->tail = NULL;
}
边栏推荐
- Leetcode 43 String multiplication (2022.02.12)
- 2022茶艺师(初级)考试题模拟考试题库及在线模拟考试
- nacos
- Tianqing sends instructions to bypass the secondary verification
- 242. Bipartite graph determination
- gslx680触摸屏驱动源码码分析(gslX680.c)
- Button wizard script learning - about tmall grabbing red envelopes
- JS plot flot application - simple curve
- [advanced digital IC Verification] command query method and common command interpretation of VCs tool
- Cnopendata geographical distribution data of religious places in China
猜你喜欢
随机推荐
为什么要了解现货黄金走势?
PHP exports millions of data
CentOS7下安装PostgreSQL11数据库
SQL优化的魅力!从 30248s 到 0.001s
[UTCTF2020]file header
科技云报道:从Robot到Cobot,人机共融正在开创一个时代
Technology cloud report: from robot to Cobot, human-computer integration is creating an era
@component(““)
Installing postgresql11 database under centos7
Redis technology leak detection and filling (II) - expired deletion strategy
微信小程序中的路由跳转
Use and analysis of dot function in numpy
Ansible
探索干货篇!Apifox 建设思路
Cnopendata American Golden Globe Award winning data
微博发布案例
面试结束后,被面试官在朋友圈吐槽了......
Problem solving: unable to connect to redis
开源生态|打造活力开源社区,共建开源新生态!
[Matlab] Simulink 自定义函数中的矩阵乘法工作不正常时可以使用模块库中的矩阵乘法模块代替