C語言鍊錶實現佇列

2022-01-11 15:48:23 字數 1781 閱讀 8774

課本上只給了佇列的陣列實現,關於鍊錶實現的留做了作業,現實現如下:

queueli.h

typedef int elementtype;

/* start: fig3_57.txt */

#ifndef _queueli_h

#define _queueli_h

struct node;

struct qnode;

typedef struct node *ptrtonode; // 指向node節點的指標

typedef struct qnode *queue; // 佇列頭,也是指向qnode節點的指標

int isempty(queue q);

queue createqueue(void);

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);

#endif /* _queue_h */

/* end */

queueli.c

#include "queueli.h"

#include "fatal.h"

#include // 節點

struct node

;struct qnode

;// 判斷佇列是否為空

int isempty(queue q)

queue createqueue(void)

// 建立乙個空佇列

void makeempty(queue q)

// 清除佇列

void disposequeue(queue q)

}// 入隊操作

void enqueue(elementtype x, queue q)

else

}// 取出隊首元素

elementtype front(queue q)

// 出隊操作

void dequeue(queue q)

else

free(frontcell); // 不要忘了釋放出對的節點

}}// 在出隊的同時返回該元素,即隊首元素

elementtype frontanddequeue(queue q)

return x;

}

測試函式 main.c(testqueli.c)

#include #include "queueli.h"

int main()

// 再次插入10個元素

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

enqueue(i, q);

// 列印

while (!isempty(q))

disposequeue(q);

return 0;

}

fatal.h(定義錯誤資訊的標頭檔案)

#include #include #define error(str)        fatalerror( str )

#define fatalerror(str) fprintf( stderr, "%s\n", str ), exit( 1 )

佇列 鍊錶 C語言實現

佇列 queue 的基本概念 佇列的影象模擬 佇列的基本操作 初始化佇列,判空,入隊,出隊,讀隊頭元素,清空佇列 順序儲存存在的問題 如果用順序儲存結構,假設陣列最大值為maxsize,我們怎麼判斷隊空呢。我們可以利用用隊尾 rear 和隊頭 front 的相對位置來進行判斷,如果rear fron...

C 佇列(鍊錶實現)

明白了c 來實現鍊錶的話,本篇文章就變得非常簡單了 如果還沒有明白如何使用c 來實現鍊錶的話建議看我之前的部落格 c 實現鍊錶的傳送門 鍊錶的話需要乙個結點類 node 佇列的話自然需要乙個佇列的類 myqueue class node class myqueue set public void e...

C語言 鍊錶佇列空間

佇列的入隊,出隊,判空,展示,清空等操作 相關的解釋都在 注釋中 include include include include 佇列 頭向尾移動減少資料,尾移動增加資料 typedef int type 自定義型別 typedef struct que 佇列空間 que,queptr que是乙個...