使用链表实现队列有以下操作:
- 队列的初始化
- 队列的入队列
- 队列的出队列
- 取队列首元素
- 队列的销毁
定义结构
typedef char LinkQueType;
typedef struct LinkQueNode
{
LinkQueType data;
struct LinkQueNode* next;
}LinkQueNode;
初始化
void LinkQueInit(LinkQueNode** q)
{
if(q==NULL)
{
return;
}
*q=NULL;
}
入队列
void LinkQuePush(LinkQueNode** q,LinkQueType value)
{
if(q==NULL)
{
return;
}
if(*q==NULL)
{
//空队列
LinkQueNode* new_node=CreatNode(value);
*q=new_node;
return;
}
LinkQueNode* cur=*q;
while(cur->next!=NULL)
{
cur=cur->next;
}
LinkQueNode* new_node=CreatNode(value);
cur->next=new_node;
}
出队列
void LinkQuePop(LinkQueNode** q)
{
if(q==NULL)
{
return;
}
if(*q==NULL)
{
return;
}
LinkQueNode* cur=*q;
*q=(*q)->next;
free(cur);
}
取队首元素
int LinkQueTop(LinkQueNode* q,LinkQueType* value)
{
if(q==NULL)
{
return 0;
}
*value=q->data;
return 1;
}
销毁队列
void LinkQueDestroy(LinkQueNode** q)
{
if(q==NULL)
{
return;
}
LinkQueNode* cur=*q;
for(;cur->next!=NULL;cur=cur->next)
{
free(cur);
}
*q=NULL;
}