链队列的基本操作
程序员文章站
2024-03-18 12:34:10
...
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int dataType;
//定义链队列结点结构
typedef struct Node{
struct Node *next;
dataType data;
}LQueueNode;
//定义链队列结构
typedef struct {
LQueueNode *front; //指向头部结点,出队
LQueueNode *rear; //指向尾部结点,入队
}LQueue;
typedef LQueue *pLQueue; //定义一个指向链队列的指针
//初始化链队列
pLQueue InitLQueue()
{
pLQueue plq=(LQueue*)malloc(sizeof(LQueue));
plq->front=plq->rear=NULL;
return plq;
}
//入队
void EnLQueue(pLQueue plq,dataType value)
{
LQueueNode *p=(LQueueNode*)malloc(sizeof(LQueueNode));
p->data=value;
p->next=NULL;
if (plq->rear==NULL) //处理空队列
{
plq->rear=p;
plq->front=p;
}
else{
plq->rear->next=p;
plq->rear=p;
}
}
//自动创建一个链队列(不使用头结点)
pLQueue CreateLQueue()
{
pLQueue plq=InitLQueue();
int i=1,num=9;
while (i<=9)
{
cout<<i<<" ";
EnLQueue(plq,i);
i++;
}
cout<<endl;
return plq;
}
//出队
void DeLQueue(pLQueue plq)
{
if (plq->front==NULL)
{
cout<<"Empty"<<endl;
return;
}
cout<<plq->front->data<<endl;
LQueueNode *temp=plq->front;
plq->front=temp->next;
free(temp);
}
//全部出队
void AllDeLQueue(pLQueue plq)
{
while (plq->front!=NULL)
{
DeLQueue(plq);
}
cout<<"Empty"<<endl;
return;
}
//释放队列
void FreeLQueue(pLQueue plq)
{
while (plq->front!=NULL)
{
LQueueNode *temp=plq->front->next;
plq->front->next=temp->next;
free(temp);
}
free(plq);
}
void main()
{
pLQueue plq=CreateLQueue();
AllDeLQueue(plq);
FreeLQueue(plq);
system("pause");
}
上一篇: 数据结构-线性结构之队列
下一篇: C语言实现栈和队列