一、初始化
#include<iostream> using namespace std; typedef struct LinkNode { int data; LinkNode* next; }LinkNode; typedef struct { LinkNode* front, * rear; }LinkQueue; void Init(LinkQueue& Q)//带头结点初始化 { Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode)); Q.front->next = NULL; } void Init(LinkQueue& Q)//不带头结点初始化 { Q.front = NULL; Q.rear = NULL; }
二、判断是否为空
bool Empty(LinkQueue& Q)//带头结点判断为空 { if (Q.front == Q.rear)return true; else return false; } bool Empty(LinkQueue& Q)//不带头结点判断为空 { if (Q.front ==NULL)return true; else return false; }
三、入队
void Push(LinkQueue& Q,int x)//带头结点入队 { LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode)); s->data = x; s->next = NULL; Q.rear->next = s; Q.rear = s; } void Push(LinkQueue& Q, int x)//不带头结点入队 { LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode)); s->data = x; s->next = NULL; if (Q.front == NULL) { Q.front = s; Q.rear = s; } else { Q.rear->next = s; Q.rear = s; } }
四、出队
void Pop(LinkQueue& Q, int& x)//带头结点出队 { LinkNode* p = Q.front->next; x = p->data; Q.front->next = p->next; free(p); } void Pop(LinkQueue& Q, int& x)//不带头结点出队 { LinkNode* p = Q.front; x = p->data; Q.front = p->next; free(p); }
五。双端队列
数据结构.队列的链式实现&&双端队列
最新推荐文章于 2024-07-20 17:53:51 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)