#include<iostream>
using namespace std;
typedef struct Node
{
char a;
struct Node *next;
}Lnode;
typedef struct Queue
{
Lnode *front;
Lnode *rear;
}LQueue;
//初始化,实参传入a的地址
void Initiate(LQueue *a)
{
a->front=NULL;
a->rear=NULL;
}
//添加元素
void AppendQueue(LQueue *a,char b)
{
Lnode * p;
p=(Lnode*)malloc(sizeof(Lnode));
p->a=b;
p->next=NULL;
if(a->front==NULL) a->front=a->rear=p;
else
{
a->rear->next=p;
a->rear=p;
}
}
int QueueNotEmpty(LQueue *Q)
{
if(Q->front==NULL )
return 0;
else return 1;
}
//取得队列第一个元素,并删除
char QueueDelete(LQueue *Q)
{
if(Q->front==NULL)
{
cout<<"the Queue havent elements"<<endl;
return NULL;
}
Lnode *p;
char data;
p=Q->front;
data=p->a;
Q->front=Q->front->next;
if(Q->front==NULL) Q->rear=NULL;
free(p);
return data;
}
//取得队列第一个元素
char QueueGet(LQueue *Q)
{
if(Q->front==NULL)
{cout<<"the Queue is empty"<<endl;
return NULL;}
else
{
return Q->front->a;
}
}
//销毁队列
void Destroy(LQueue *Q)
{
Lnode *p;
if(Q->front==NULL) return ;
while(Q->front!=NULL)
{
p=Q->front;
Q->front=Q->front->next;
free(p);
}
}
void main()
{
LQueue Q;
char a;
Initiate(&Q);
//初始化
AppendQueue(&Q,'p');
AppendQueue(&Q,'h');
AppendQueue(&Q,'a');
AppendQueue(&Q,'j');
a=QueueDelete(&Q);//取队头元素并删除
cout<<a<<endl;
cout<<QueueGet(&Q)<<endl;//取得队友元素
Destroy(&Q);//销毁队列
if(QueueNotEmpty) cout<<"destroy sucessfuly "<<endl;
else cout<<"destroy unsucessfully"<<endl;
system("pause");
}
编程实现链式队列
最新推荐文章于 2020-06-23 10:53:23 发布