链表队列和循环队列的基本操作

链表队列和循环队列的基本操作

实验内容

完成以下任务:
数组7 5 3 9 2 4 全部入队列
进行三次出队列
将15 18入队列
输出从队头到的队尾所有元素
分别用链队列、循环队列(最大长度为7
队列的操作比较简单
链表队列参考链表
循环队列记住下标加一以及队列满的判断

源码:

#include
#include
using namespace std;
typedef struct QNode {
	int data;
	QNode* next;
}QNode, * QueuePtr;
typedef struct {
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;
//链队列的创建
//假设不为空队列
void DeQueue(LinkQueue& Q, int& e);//出列
void EnQueue(LinkQueue& Q, int e);//入列
void PrintQueue(LinkQueue Q);//输出
void InitQueue(LinkQueue& Q);//初始化
void InitQueue(LinkQueue& Q) {
	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
	Q.front->next = NULL;

}
void DeQueue(LinkQueue& Q, int& e) {
	QNode* p;
	p = (QueuePtr)malloc(sizeof(QNode));
	p = Q.front->next;
	e = p->data;
	cout << e<<' ';
	Q.front->next = p->next;
	if (Q.rear == p)Q.rear = Q.front;
	free(p);
	


}
void EnQueue(LinkQueue& Q, int e) {
	QNode* p;
	p = (QueuePtr)malloc(sizeof(QNode));
	p->data = e;
	p->next = NULL;
	Q.rear->next = p;
	Q.rear = p;
	cout << e <<' ';
}
void PrintQueue(LinkQueue Q) {
	QNode* p = (QueuePtr)malloc(sizeof(QNode));
	p = Q.front->next;
	while (p)
	{
		cout << p->data <<' ';
		p=p->next;
	}

}
int main() {
	int number = 0;
	LinkQueue Q;
	InitQueue(Q);
	cout << "按顺序输入7、5、3、9、2、4,依次入队列(0为截断点)"<> number; number != 0; cin >> number)
		EnQueue(Q, number);
	cout << "退出队列的元素:";
	for (int i = 0; i < 3; i++)
		DeQueue(Q, number);
	//三次出队列
	cout << "入队列元素";
	EnQueue(Q, 15);
	EnQueue(Q, 18);
	cout << "最终队列:";
	PrintQueue(Q);

	//再将15、18入队列,输出所有队列元素
	return 0;
}

from nuister kjr

你可能感兴趣的:(数据结构)