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 + -
显示快捷键?