佇列鏈式儲存 設計與實現 API函式

2021-07-03 20:46:28 字數 2120 閱讀 5729

佇列相關基礎內容參我的博文:佇列順序儲存 - 設計與實現 - api函式

佇列也是一種特殊的線性表;可以用線性表鏈式儲存來模擬佇列的鏈式儲存。

主要**:

// linkqueue.h

// 佇列鏈式儲存api宣告

#ifndef _linkqueue_h_

#define _linkqueue_h_

typedef void linkqueue;

// 建立佇列

linkqueue* linkqueue_create();

// 銷毀佇列

void linkqueue_destroy(linkqueue* queue);

// 清空佇列

void linkqueue_clear(linkqueue* queue);

// 入佇列

// 出佇列

void* linkqueue_retrieve(linkqueue* queue);

// 獲取對頭元素

void* linkqueue_header(linkqueue* queue);

// 獲取佇列長度

int linkqueue_length(linkqueue* queue);

#endif //_my_linkqueue_h_

// linkqueue.cpp

// 佇列鏈式儲存api實現

// 呼叫了鏈式儲存線性表

#include #include "linkqueue.h"

#include "linklist.h"

#include typedef struct _tag_linkqueue

tlinkqueue;

// 建立佇列相當於建立鍊錶

linkqueue* linkqueue_create()

// 銷毀佇列相當於建立鍊錶

void linkqueue_destroy(linkqueue* queue)

// 清空佇列相當於清空鍊錶

void linkqueue_clear(linkqueue* queue)

}// 入佇列相當於在鍊錶尾部插入元素

tmp->item = item;

ret = linklist_insert(queue, (linklistnode *)tmp, linklist_length(queue));

if (ret)

return ret;

}// 出佇列相當於刪除鍊錶0號位置的元素

void* linkqueue_retrieve(linkqueue* queue)

item = tmp->item;

free(tmp); // 不要忘記出佇列的時候釋放結點

return item;

}// 獲取隊頭元素相當於獲取鍊錶0號位置元素

void* linkqueue_header(linkqueue* queue)

return tmp->item;

}// 獲取佇列長度

int linkqueue_length(linkqueue* queue)

// main.cpp

// 佇列鏈式儲存api測試程式

#include #include "linkqueue.h"

const int maxn = 10;

void play()

lq = linkqueue_create(); // 建立佇列

// 入佇列

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

// 佇列屬性

printf("header: %d\n", *((int *)linkqueue_header(lq)));

printf("length: %d\n", linkqueue_length(lq));

// 出佇列

while (linkqueue_length(lq))

// 銷毀佇列

linkqueue_destroy(lq);

}int main()

相關工程**:github

線性表鏈式儲存設計與實現 API實現

基本概念 鏈式儲存定義 為了表示每個資料元素與其直接後繼元素之間的邏輯關係,每個元素除了儲存本身的資訊外,還需要儲存指示其直接後繼的資訊。表頭結點 鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊 資料結點 鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊...

佇列順序儲存 設計與實現 API函式

queue經常使用操作 銷毀佇列 清空佇列 進佇列出佇列 獲取隊頭元素 獲取佇列的長度 佇列也是一種特殊的線性表 能夠用線性表順序儲存來模擬佇列。主要 seqqueue.h 順序儲存佇列api宣告 ifndef my seqqueue h define my seqqueue h typedef v...

Java佇列 鏈式儲存實現

佇列介面 public inte ce queue 鍊錶介面 public inte ce node 隊列為空丟擲該異常 public class queueemptyexception extends runtimeexception 單鏈表的定義 public class slnode impl...