資料結構與演算法分析 用C語言實現佇列(陣列方式)

2021-06-22 03:14:39 字數 2262 閱讀 4570

佇列先進先出,涉及到兩個位置的操作,乙個是隊首,乙個是隊尾,我們分別用兩個整型變數來表示隊首和隊尾,另外需要注意的是我們實現佇列時要借助迴圈陣列,具體在**中已經很清楚了。實現過程中的技巧與用陣列實現棧時大多數一樣。

首先,我們來宣告型別,結構和例程。

/**

* @file queue.h

* @brief 用鍊錶實現佇列-宣告adt部分

* @details

* @author [email protected]

* @date 2014-5-20

*/#include #ifndef _queue_h

//實現佇列所需的結構和型別

typedef int elementtype;

struct queuerecord;

typedef struct queuerecord *queue;

int isempty(queue q); //判空

int isfull(queue q); //判滿

queue createqueue(int maxelements); //建立佇列

void disposequeue(queue q); //消除佇列

void makeempty(queue q); //置空佇列

void enqueue(elementtype x, queue q); //入隊

elementtype front(queue q); //返回隊首

void dequeue(queue q); //出隊

elementtype frontanddequeue(queue q); //出隊並返回隊首

void fatalerror(char *str); //錯誤資訊

static int succ(int value, queue q); //隊首或隊尾的前移

#endif // _queue_h

然後實現他們:

/**

* @file queue.c

* @brief 用鍊錶實現佇列-實現部分

* @details

* @author [email protected]

* @date 2014-5-20

*/#include #include #define minqueuesize (5) //最小佇列大小

struct queuerecord

;//判斷佇列是否為空

int isempty(queue q)

//構造空佇列

void makeempty(queue q)

//錯誤資訊

void fatalerror(char *str)

//隊頭或隊尾的移動

static int succ(int value, queue q)

//入隊

void enqueue(elementtype x, queue q)

}//判斷佇列是否滿

int isfull(queue q)

//建立佇列

queue createqueue(int maxelements)

//消除佇列

void disposequeue(queue q)

}//返回隊首元素

elementtype front(queue q)

//出隊

void dequeue(queue q)

}//出隊並返回隊首

elementtype frontanddequeue(queue q)

return 0;

}

最後在主程式中測試。

/**

* @file main.c

* @brief 用鍊錶實現佇列-測試部分

* @details

* @author [email protected]

* @date 2014-5-20

*/#include #include #include int main()

經過了這幾個程式,我們大體上已經掌握了鍊錶,佇列和棧的基本實現和常用例程,當然,這只是個基礎,對於這幾個程式,乙個合格的程式設計師應該做到爛熟於心,關於這幾個資料結構的常用應用,我會在後面慢慢來做,下一步,我們就開始學習資料結構中另乙個非常重要的部分—排序。

資料結構與演算法分析 用C語言實現單鏈表

掌握單鏈表很容易,把下面的 弄懂,敲幾遍,全部記住,而且記清每乙個細節。首先,在list.h中宣告單鏈表的adt.我們把我們所需要的自定義型別啊,函式啊,都宣告出來,但這裡我們只是宣告他們,而具體實現則是在list.c中進行。file list.h brief 單鏈表的宣告 details auth...

資料結構與演算法(六)查詢 c語言實現

靜態查詢表 include include include define max 20 typedef struct elemtype typedef struct stable stable initlist int n for int i 0 i n i st length n return s...

資料結構 查詢演算法 用c語言實現查詢演算法《一》)

一 查詢的分類 1 靜態查詢 不進行插入和刪除操作。2 動態查詢 可進行插入和刪除操作。按查詢的基本方法可分為 比較查詢法和計算查詢法。按元素的組織結構可分為 基於線性表的查詢和基於樹的查詢。二 順序查詢 基於線性表 1 陣列順序儲存 靜態 比較查詢 include define list size...