c语言实现链式队列的相关操作

队列是受限制的线性表,只允许在一端插入,在另一端删除

#include<stdio.h>
#include<malloc.h>
#include<Windows.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)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
	if (!Q.front)
		return;
	Q.front->next = NULL;
	printf("\t创建队列成功啦!\n");
	return;
}
void DestoryQueue(LinkQueue& Q)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	while (Q.front)
	{
		Q.rear = Q.front->next;
		free(Q.front);
		Q.front = Q.rear;
	}
	printf("\t销毁队列成功啦!\n");
	return;
}
void  DeQueue(LinkQueue& Q)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	int e;
	QNode *p;
	if (Q.front == Q.rear)
		return ;
	p = Q.front->next;
	e = p->data;
	Q.front->next = p->next;
	if (Q.rear == p)
	{
		Q.rear = Q.front;
	}	
	printf("\t现在执行出队操作:\n");
	printf("\t出队元素是:%d\n",e);
	return;
}
void EnQueue(LinkQueue& Q, QElemType& e)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	QueuePtr p;
	p = (QueuePtr)malloc(sizeof(QNode));
	if (!p)
	{
		printf("\t分配内存失败!\n");
		return;
	}
	p->data = e;
	p->next = NULL;
	Q.rear->next = p;
	Q.rear = p;
	return;
}
void QueueLength(LinkQueue& Q)
{
	int m = 0;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	while (Q.front != Q.rear)
	{
		m++;
		Q.front = Q.front->next;
	}
	printf("\t队列的长度是%d\n",m);
	
}
void EmptyQueue(LinkQueue& Q)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0X07);
	if (Q.front->next > Q.rear)
	{
		printf("\t是空队列\n");
	}
	else
	{
		printf("\t不是空队列\n");
	}
}
void meanu()
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
	printf("\t\t\t*****------^*^--------*****\n");
	printf("*****\t1-->创建一个空队列		\t\t2-->队列元素入队    \t*****\n");
	printf("*****\t3-->队列元素出栈			\t4-->求得队列长度    \t*****\n");
	printf("*****\t5-->销毁队列				\t6-->判断是否为空队列\t*****\n");
	printf("*****\t7--> 退出程序			\t\t*****\n");
}

发布了15 篇原创文章 · 获赞 0 · 访问量 227

猜你喜欢

转载自blog.csdn.net/qq_44423388/article/details/103938978