#include <stdio.h>
#include <stdlib.h>
typedef int QElemType;
typedef struct Qnode {
QElemType data; //数据域
struct Qnode *next; //队列指针域
}QNode, *QueuePtr;
typedef struct {
QueuePtr front; //队列头指针
QueuePtr rear; //队列尾指针
}LinkQueue;
void InitQueue(LinkQueue &Q) { //构造队列
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if(!Q.front) {
printf("队列构造失败,程序退出!");
exit(!0);
}
Q.front -> next = NULL;
}
void DestroyQueue(LinkQueue &Q) { //销毁队列
while(Q.front) {
Q.rear = Q.front -> next;
free(Q.front);
Q.front = Q.rear;
}
printf("\n\n队列已销毁!\n\n");
}
void EnQueue(LinkQueue &Q,QElemType e) { //插入元素
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(!p) {
printf("存储空间分配失败,程序退出!");
exit(!0);
}
printf("请输入进队列的值:");
scanf("%d",&e);
p -> data = e;
p -> next = NULL;
Q.rear -> next = p;
Q.rear = p;
}
void DeQueue(LinkQueue &Q, QElemType &e) { //出队列操作
QueuePtr p;
if(Q.front == Q.rear) {
printf("队列为空,无法执行出队操作,程序退出!");
exit(!0);
}
p = Q.front->next;
e = p -> data;
Q.front -> next = p -> next;
printf("\n出队元素为:%d\n",e);
if(Q.rear == p) {
Q.front = Q.rear;
printf("队列内最后一个元素已出队\n");
}
free(p);
}
int main() {
LinkQueue Q;
QElemType e;
int num;
InitQueue(Q); //构造队列
printf("请输入进入队列数量:");
scanf("%d",&num);
for(int i=1;i <= num;i++) {
EnQueue(Q,e); //插入元素
}
DeQueue(Q,e); //第一个元素出队列
// DestroyQueue(Q); //销毁队列
return 0;
}
C语言—链队列
猜你喜欢
转载自blog.csdn.net/Long_UP/article/details/121767065
今日推荐
周排行