文章目录
- 🍊自我介绍
- 🍊概述
- 🍊链式队列代码
- linkstack.c
- linkstack.h
- main.c
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。
今天我们来进行队列的最后一节内容,小伙伴们大家加油,一起努力哦~
🍊概述
介绍:
链式队列:插入操作再队尾进行,删除操作在队头进行,由队头指针和队尾指针控制队列的操作。
图解:
通过图解来看,链式队列操作由两部分,一部分是链表头,一部分是队列头。
🍊链式队列代码
linkstack.c
#include "linkstack.h"//1.创建一个空的链式队列.为队列头和头结点分配空间
linkqueue_t *create_empty_linkqueue()
{linkqueue_t *q = NULL;linknode_t *head = NULL;//1.先给头结点分配空间head = (linknode_t *)malloc(sizeof(linknode_t));head->next = NULL;//2.为队列头分配空间q = (linkqueue_t *)malloc(sizeof(linkqueue_t));q->front = q->rear = head;//返回队列头return q;
}//2.判空
int is_empty_linkqueue(linkqueue_t *q)
{return q->front == q->rear ? 1 : 0;
}//3.入队
void enter_linkqueue(linkqueue_t *q,data_t data)
{linknode_t *temp = NULL; temp = (linknode_t *)malloc(sizeof(linknode_t));temp->data = data;temp->next = q->rear->next;q->rear->next = temp;//更新尾指针q->rear = temp;return ;
}//4.出队
data_t delete_linkqueue(linkqueue_t *q)
{linknode_t *temp = NULL;data_t data;//1.保存要删除结点的地址,取出数据temp = q->front->next;data = temp->data;//2.释放结点q->front->next = temp->next;free(temp);temp = NULL;//3.若是为空,q->front->next == NULL.if(q->front->next == NULL){q->rear = q->front; }return data;
}
linkstack.h
#ifndef __LINKSTACH_H__
#define __LINKSTACH_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>//链表结点的设计
typedef int data_t;typedef struct node
{data_t data;struct node *next;
}linknode_t;//队列头的设计
typedef struct
{linknode_t *front;linknode_t *rear;
}linkqueue_t;//1.创建一个空的链式队列.为队列头和头结点分配空间
extern linkqueue_t *create_empty_linkqueue();//2.判空
extern int is_empty_linkqueue(linkqueue_t *q);//3.入队
extern void enter_linkqueue(linkqueue_t *q,data_t data);//4.出队
extern data_t delete_linkqueue(linkqueue_t *q);#endif
main.c
#include "linkstack.h"int main()
{linkqueue_t *q = NULL; int i = 0;q = create_empty_linkqueue();for(i = 0;i < 10;i++){enter_linkqueue(q,i); }while(!is_empty_linkqueue(q)){printf("%d ",delete_linkqueue(q)); }printf("\n");return 0;
}