项目原因,需要写一个队列来存储串口实时输出的字符串。看了网上很多博文和一些数据结构的数据,给的例子都是实现对单个数字或者字符的队列操作,并没有实现在队列中存储字符串。这里分享一种可以实现的方法。
关于队列的一些基本的概念这里就不在介绍,下面直接上代码。
主要实现了:
将字符串存入队列之中,代码中的MAXSIZE 是最大的队列长度。实际中由于够成了循环队列,所以这个最大存储长度只有(MAXSIZE-1)。后面的二维数组 ais_data[MAXSIZE][250] 中250是队列中的一次存储字符串的最大的长度。
总体来说:在可以确定队列的长度的最大值的情况下,推荐使用循环队列。如果无法预知队列的长度,可以使用链表队列。
#include#include#include#include#include #define MAXSIZE 20
/*循环队列对的顺序存储结构*/
typedef struct
{
char ais_data[MAXSIZE][250]; //队列中的二维数组元素
int front; //头指针
int rear; //尾指针
}sqQueue;
/*初始化一个空队列*/
int InitQueue(sqQueue *Q)
{
Q->front=0; //结构体指针
Q->rear=0;
return 1;
}
/* 将队列清空 */
int ClearQueue(sqQueue *Q)
{
Q -> front = 0;
Q ->