数据结构练习笔记——链式队列的基本操作

链式队列的基本操作

【问题描述】根据链式队列的类型定义,完成链队列的基本操作。主函数中测试队列。
【输入形式】一个整数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)<<"  ";
	}
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

posted @ 2023-07-25 09:36  某zhuan  阅读(113)  评论(0)    收藏  举报