C語言實現迴圈佇列 佇列可儲存字串

2021-09-26 18:42:35 字數 1315 閱讀 2550

專案原因,需要寫乙個佇列來儲存串列埠實時輸出的字串。看了網上很多博文和一些資料結構的資料,給的例子都是實現對單個數字或者字元的佇列操作,並沒有實現在佇列中儲存字串。這裡分享一種可以實現的方法。

關於佇列的一些基本的概念這裡就不在介紹,下面直接上**。

主要實現了:

將字串存入佇列之中,**中的maxsize 是最大的佇列長度。實際中由於夠成了迴圈佇列,所以這個最大儲存長度只有(maxsize-1)。後面的二維陣列 ais_data[maxsize][250] 中250是佇列中的一次儲存字串的最大的長度。

總體來說:在可以確定佇列的長度的最大值的情況下,推薦使用迴圈佇列。如果無法預知佇列的長度,可以使用鍊錶佇列。

#include#include#include#include#include #define maxsize 20

/*迴圈佇列對的順序儲存結構*/

typedef struct

sqqueue;

/*初始化乙個空佇列*/

int initqueue(sqqueue *q)

/* 將佇列清空 */

int clearqueue(sqqueue *q)

/*返回佇列當前長度*/

int queuelength(const sqqueue *q)

/*迴圈隊列入隊操作 e為插入的元素*/

int enqueue(sqqueue *q,char* e)

strcpy(q->ais_data[q->rear],e); //將元素e賦值給隊尾

q->rear=(q->rear+1)%maxsize; //如果指向最後一位則轉回到陣列頭

return 1;

}/*若佇列不為空,則刪除q中隊頭元素,用e值返回*/

int dequeue(sqqueue *q,char *e)

strcpy(e, q->ais_data[q->front]);

q->front=(q->front+1)%maxsize;

return 1;

}

測試執行主函式

void main(void)

a = queuelength(&q);

printf("佇列長度為%d\n",a);

for(i=0;i<15;i++)

a = queuelength(&q);

printf("佇列長度為%d\n",a);

}

好奇怪,我格式明明是正確的。顯示就亂了,額將就看下吧。

C 實現迴圈順序佇列(佇列)

佇列同棧相對,前者為先進先出 first in first in 順序隊裡中,使用陣列儲存資料,基本原理同順序線性表和順序棧。由於使用陣列,所以必須事先定義陣列的最大容量maxsize,使用front表示隊頭位置 最先入元素 使用rear表示隊尾元素 最後入元素 這樣每進入乙個元素,rear要自加一...

mysql迴圈佇列 C語言實現 迴圈佇列

include include include typedef struct queue int pbase 陣列 int front 頭 int rear 尾 rear不存放資料,所以rear前面的是最後乙個資料 queue void init queue queue pq bool full q...

佇列的順序儲存結構(迴圈佇列)(C語言實現)

1 include 2 include 3 4 define ok 1 5 define err 2 6 define true 1 7 define false 0 8 define maxsize 4 定義佇列的最大長度 910 typedef int status 定義函式返回的狀態,ok e...