数据结构练习笔记——链式队列的基本操作
链式队列的基本操作
【问题描述】根据链式队列的类型定义,完成链队列的基本操作。主函数中测试队列。
【输入形式】一个整数m,表示入队的元素个数
【输出形式】第一行:输出队头元素 第二行:队列中元素依次出队以空格间隔
【样例输入】5
【样例输出】
1
1 3 5 7 9
【样例输入】0
【样例输出】
empty!
#include <iostream>
using namespace std;
#include <stdlib.h>
struct QNode {
int data;
QNode *next;
};
struct LinkQueue {
QNode *front;
QNode *rear;
};
//---------------------
void initQueue(LinkQueue &Q) {
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
}//初始化
void enQueue(LinkQueue &Q,int n) {
QNode *p=(QNode *)malloc(sizeof(QNode));
p->data=n;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}//进队列
int queueEmpty(LinkQueue Q) {
if(Q.front==Q.rear) return 1;
else return 0;
}//判断队列是否为空
int deQueue(LinkQueue &Q) {
if(!queueEmpty(Q)) {
int e=Q.front->next->data;
Q.front=Q.front->next;
return e;
}
}//出队列
int getFront(LinkQueue Q) {
if(!queueEmpty(Q)) {
return Q.front->next->data;
}
else {
cout<<"empty!";
exit(0);
}
}//获取队头元素,若为空队列,输出empty!并结束程序
//------------------------
int main() {
int m;
cin>>m;
LinkQueue Q;
initQueue(Q);
for(int i=1; i<=m; i++) {
enQueue(Q,i*2-1);
}
cout<<getFront(Q)<<endl;
while(!queueEmpty(Q)) {
cout<<deQueue(Q)<<" ";
}
}
记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

浙公网安备 33010602011771号