FIFO實現 陣列方式

2021-08-06 01:51:42 字數 1983 閱讀 3636

//

// 檔案:config.h

//#ifndef __config_h

#define __config_h

#ifndef true

#define true 1

#endif

#ifndef false

#define false 0

#endif

typedef unsigned char uint8;

typedef signed char int8;

typedef unsigned short uint16;

typedef signed short int16;

typedef unsigned int uint32;

typedef signed int int32;

typedef float fp32;

#include "fifoqueue.h"

#endif

//// 檔案:fifoqueue.h

//#ifndef _fifoqueue_h

#define _fifoqueue_h

#define elemtype uint8

#define queuesize 20 //fifo佇列的大小

#define queuefull 0 //fifo滿置0

#define queueempty 1 //fifo空置1

#define queueoperateok 2 //佇列操作完成 賦值為2

struct fifoqueue

;//queue initalize

void queueinit(struct fifoqueue *queue);

// queue in

uint8 queuein(struct fifoqueue *queue,elemtype sdat);

// queue out

uint8 queueout(struct fifoqueue *queue,elemtype *sdat);

#endif

//// 檔案:fifoqueue.c

//#include "config.h"

//queue init

void queueinit(struct fifoqueue *queue)

// queue in

uint8 queuein(struct fifoqueue *queue,elemtype sdat) //資料進入佇列

else

}// queue out

uint8 queueout(struct fifoqueue *queue,elemtype *sdat)

else

} //// 檔案:main.c

將陣列臆想為首位相連的記憶體,圖c是空佇列,對頭和隊尾都指向同乙個位置並且元素個數=0.

圖a是隊尾已經繞完一圈陣列回到陣列起點,隊頭已經輸出了陣列中的j0,j1,j2的資料

圖b是滿佇列,對頭和隊尾都指向同乙個位置並且元素個數=queuesize.

最通俗的理解:把尾rear隊尾理解為分針,把font隊頭理解為時針,分針總是跑的比時針快,只有分針跑了(fifo中有資料),時針隊頭才有資料輸出。

字典樹 陣列方式實現

在詞典中查詢某個單詞時,例如 boy,我們會先找到 b 然後找到 o 最後找到 y 這個過程的時間複雜度是 o m m 為單詞的長度。字典樹是模擬這個過程的資料結構,十分高效。例如儲存 do,dog,boy,bob,結構如下 可以看見,公共字首僅儲存了一遍 字典樹在空間上的效率也很高。但若用本身的結...

用陣列方式 實現獲取class屬性物件

用陣列方式 實現獲取class屬性物件 var get byclass function sclass,oparent bytagname function elem,obj 1.獲取id元素 2.獲取obj下所有elem標籤 如果沒有obj則取所有elem標籤 3.1定義乙個空陣列aclass 3...

陣列方式進行表單提交

今天遇到乙個問題,要儲存很多表單資訊,苦惱了許久,終於發現乙個挺不錯的方法,以陣列的形式把表單中的資料提交至後台進行儲存。其實實現起來很簡單,就是給表單中要提交的資訊的name命名時要有一定的規範,我們先比較下下面這兩種方式的差別 第一種 普通的方式,每個要提交的值都有乙個名稱 服務 index.p...