队列的链式存储方式(带头结点与不带头结点)
//初始化队列 带头结点
void InitQueue1(LinkQueue &Q);
//初始化队列 不带头结点
void InitQueue2(LinkQueue &Q);
//判空 带头结点
bool IsEmpty1(LinkQueue &Q);
//判空 不带头结点
bool IsEmpty2(LinkQueue &Q);
//进队 带头结点
void EnQueue1(LinkQueue &Q, char x);
//进队 不带头结点
void EnQueue2(LinkQueue &Q, char x);
//出队 带头结点 先进先出
bool OutQueue1(LinkQueue &Q, char &x);
//出队 不带头结点 先进先出
bool OutQueue2(LinkQueue &Q, char &x);
下面展示一些 代码。
//队列的链式存储
//分 带头结点 和 不带头结点
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct LNode{
char data;
struct LNode *next;
}LNode;
typedef struct LinkQueue{
LNode *front;
LNode *rear;
}LinkQueue;
/** 初始化队列,判空, 进队, 出队 **/
//初始化队列 带头结点
void InitQueue1(LinkQueue &Q){
Q.front = Q.rear = (LNode *)malloc(sizeof(LNode));
Q.front->next = NULL;
}
//初始化队列 不带头结点
void InitQueue2(LinkQueue &Q){
Q.front = Q.rear = NULL;
}
//判空 带头结点
bool IsEmpty1(LinkQueue &Q){
if(Q.front->next == NULL){
return true;//为空
}
else{