lqueue.cpp

来自「个人做的,也许有人需要,有错希望能给你们带来帮助」· C++ 代码 · 共 147 行

CPP
147
字号

#include<stdio.h>
#include<malloc.h>
typedef char DataType;
typedef struct LQNode
{
	DataType data;
	LQNode *Next;
}LQNode,*LQueuePt;
typedef struct
{
	LQueuePt front;
	LQueuePt rear;
}LQueue;

int LQueueLength(LQueue &);
int DeLQueue(LQueue &);
//初始化
int InitLQ(LQueue &q)
{
	q.front =q.rear = (LQueuePt)malloc(sizeof(LQNode));
	if(!q.front ) {}
	q.front->Next = NULL;
     return 1;
		
}
//判空
int LQueueEmpty(LQueue &q)
{
	if(q.front == q.rear)
	{
		return(1);
		}
	else return(0);

}
//插入元素
void EnLQueue(LQueue &q,DataType x)
{
	LQueuePt p;
	p = (LQueuePt)malloc(sizeof(LQNode));
	if(!p) {}

	p->data = x;
	p->Next = NULL;
	q.rear->Next = p;
		q.rear =p;

}
//出队一个元素
int DeLQueue(LQueue &q)
{
	DataType e;
	if(q.front==q.rear) return -1;
		LQueuePt p;

	
	p = (LQueuePt)malloc(sizeof(LQNode));

	p  = q.front->Next;
    e = p->data;
	printf("%c\n",e);
	q.front->Next = p->Next;
	if(q.rear == p)
		q.rear = q.front ;
	free(p);
	return 1;
	
}
//输出整个队列
int DeLQueueAll(LQueue &q)
{
	DataType e;
	if(q.front==q.rear) return -1;
		LQueuePt p;

	int i,n;
	n= LQueueLength(q);
	for(i=0;i<n;i++)
	{
	p = (LQueuePt)malloc(sizeof(LQNode));
	p  = q.front->Next;
    e = p->data;
	printf("%c",e);
	q.front->Next = p->Next;
    if(q.rear == p)
	q.rear = q.front ;
	free(p);
	}
	
	return 1;
	
}

//长度
int LQueueLength(LQueue &q)
{
	int n = 0 ;
		LQueuePt p;
	p = (LQueuePt)malloc(sizeof(LQNode));
		p =q.front->Next ;
	while(p!=NULL)
	{
		n++;
		p=p->Next;
	}
	return(n);
}
//销毁
int DestroyQueue(LQueue &q)
{
	while(q.front){
		q.rear=q.front->Next;
		free(q.front);
		q.front=q.rear;
	}
   return 1;
}
//主程序
void main()
{
printf("(1)初始化队列q;\n");
LQueue q;
InitLQ(q);
printf("(2)判断队列q是否非空;\n");
LQueueEmpty(q);
if(LQueueEmpty(q))printf("     该队列为空\n");
else printf("      该队列不为空\n");
printf("(3)依次进队元素a,b,c;\n");
EnLQueue(q,'a');
EnLQueue(q,'b');
EnLQueue(q,'c');
printf("(4)出队一个元素,输出该元素\n");
DeLQueue(q);
printf("(5)队列的元素个数是%d\n",LQueueLength(q));
printf("(6)依次进队元素d,e,f;\n");
EnLQueue(q,'d');
EnLQueue(q,'e');
EnLQueue(q,'f');
printf("(7)队列的元素个数是%d\n",LQueueLength(q));
printf("(8)输出出队序列;\n");
DeLQueueAll(q);
printf("\n");
printf("(9)释放队列。\n");
DestroyQueue(q);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?