一、优势
相较于数组实现,链表实现的队首与队尾都有指针,相关操作更高效,操作更清晰
二、
#include "stdio.h"
#include "stdlib.h"
#define elemtype int
int volume=0;
typedef struct node{
elemtype data;
struct node *last;
}node;//创建结构体;
typedef struct{
node *p;
elemtype data;
}Delete;//创建结构体用于出队数据传输及更新队首指针;
node *create(elemtype data)
{
node *p=(node*)malloc(sizeof(node));
p->data =data;
p->last=NULL;
volume++;
return p;
}//新建队首;
node *increase(node *queue_rear,elemtype data)
{
node *p=(node*)malloc(sizeof(node));
p->last=queue_rear;
p->data=data;
volume++;
return p;
}//入队;
Delete out(node *queue_front)
{
if(volume!=0){
Delete result;
result.data=queue_front->data ;
result.p =queue_front->last ;
free(queue_front);
volume--;
return result;
}else{
printf("Queue is empty!");
}
}//出队;
int main(void)
{
node *queue_front=create(1);//指向队首;
node *queue_rear=queue_front;//指向队尾;
//////////////////////////////////////初始化;
queue_rear=increase(queue_rear,2);//更新队尾;
Delete result=out(queue_front); //出队;
queue_front=result.p ;//更新队首;
elemtype data=result.data ;//获取出队数据;
printf("%d\n",data);//出栈测试;
return 0;
}
代码实现