/*注:定义存储指向队头结点与指向队尾结点的指针后,在函数中调用
两个结构体时,要注意其中的关系,不要因为队头的结点的指针
指向的结点地址的再次指向而造成混乱
*/
void InitLNode(LiNode &B); //声明函数InitLNode用于初始化链式队列
bool InputLNode(LiNode &B); //声明函数InputLNode用于在队列中输出数据
bool LNodeEmpty(LiNode& B); //声明函数LNodeEmpty用于判断队列是否为空
void InsertLNode(LiNode &B);//声明函数InsertLNode用于在队列中输入数据
bool DestroyQueue(LNode& A);//声明函数DestroyQueue用于销毁队列
//在队列中输出数据
bool InputLNode(LiNode &B) {
if (LNodeEmpty(B)) {
return false;
}else{
LNode Q = B.front->next; //定义LNode类型的指针变量Q指向头结点的下一个结点
printf("输出数据为:%d", Q->data);//输出数据
B.front->next = Q->next;
if(B.rear == Q){ //判断输出的结点是否为最后一个结点
B.rear = B.front; //将其队列置空
}
return true;
}
}
//判断队列是否为空
bool LNodeEmpty(LiNode &B){
if(B.front == B.rear){
printf("传入的链式队列为空");
return true;
}else{
return false;
}
}
//在队列中输入数据
void InsertLNode(LiNode &B){
Elemtype i; //定义int类型的变量i接受键盘键入的数据
LNode W = (QNode*)malloc(sizeof(QNode));//定义LNode类型w向计算机的堆内申请存储空间
printf("请输入要插入的数据");
scanf_s("%d", &i);
W->data = i;
W->next = NULL;
B.rear->next = W;
B.rear = W; //更新尾结点的指向
}
//初始化链式队列
void InitLNode(LiNode &B){
B.front=B.rear=(QNode*)malloc(sizeof(QNode));
B.front->next = NULL; //更新结点中next的指向
printf("初始化链式队列成功\n");
}