C语言实现链式队列

链式队列

有头结点,使得front==rear为判空条件

1、创建链式队列

typedef int data_type;
typedef struct link_node{
   struct link_node *next;
	data_type data;
}link_list;
typedef struct{
link_list *front;
link_list *rear;
}link_queue;


link_queue *create_link_queue(){
link_queue *q=NULL;
q=(link_queue *)malloc(sizeof(link_queue));

link_list *head=(link_list*)malloc(sizeof(link_list));
head->next=NULL;
q->rear=q->front=head;
return q;
}

2、判空

int is_empty(link_queue *q){
return q->front==q->rear;
}

3、入队

void in_queue(link_queue *q,data_type data){
link_list *temp=(link_list*)malloc(sizeof(link_list));
temp->data=data;
temp->next=q->rear->next;
q->rear->next=temp;

q->rear=temp;
}

4、出队

当最后一个元素出队,将rear和front指向同一个地址

data_type out_queue(link_queue *q){
link_list *temp=q->front->next;
data_type data=temp->data;
q->front->next=temp->next;
free(temp);
temp=NULL;
//最后一个元素出队
if(q->front->next==NULL){
q->rear=q->front;
}

return data;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值