(九)佇列的鏈式儲存結構設計與實現

2021-08-18 17:33:57 字數 2260 閱讀 8951

1、概念

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

2、實現

(1)linkqueue.h

#ifndef _my_linkqueue_h_

#define _my_linkqueue_h_

typedef void linkqueue;

linkqueue* linkqueue_create();

void linkqueue_destory(linkqueue* queue);

void linkqueue_clear(linkqueue* queue);

void* linkqueue_retrieve(linkqueue* queue);

void* linkqueue_header(linkqueue* queue);

int linkqueue_length(linkqueue* queue);

#endif

(2)linkqueue.c(linklist.h鏈結)

#include #include #include #include "linkqueue.h"

#include "linklist.h"

//佇列是特殊的線性表

//佇列的業務結點的資料結構

typedef struct _tag_linkqueuenode

tlinkqueuenode;

//建立鏈式儲存的佇列 相當於 建立鏈式儲存的線性表

linkqueue* linkqueue_create()

//銷毀佇列 相當於 銷毀線性表

//涉及結點的記憶體管理

void linkqueue_destory(linkqueue* queue)

//清空佇列 相當於 清空線性表

//涉及結點的記憶體管理,需要釋放每乙個結點

void linkqueue_clear(linkqueue* queue)

linklist_clear(queue);

}//向佇列中新增元素 相當於 向線性表尾部新增元素

memset(tmp, 0, sizeof(tlinkqueuenode));

tmp->item = item;

//需要把棧的item(棧的業務結點) 轉化成 鍊錶的業務結點linklistnode

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

if (ret != 0)

return ret;

} return ret;

}//從佇列中刪除元素 相當於 從線性表的頭部刪除元素

void* linkqueue_retrieve(linkqueue* queue)

//刪除之前先快取

ret = tmp->item;

if (ret != null)

return ret;

}//獲取佇列頭部元素 相當於 從線性表的0號位置拿資料

void* linkqueue_header(linkqueue* queue)

return tmp->item;

}//求佇列的長度 相當於 求線性表的長度

int linkqueue_length(linkqueue* queue)

(3)具體實現

#include #include #include #include "linkqueue.h"

void maindm009()

//插入元素

printf("the queue is: ");

for (int i = 0; i < 5; i++)

printf("\n");

//列印佇列長度

printf("the queue's length:%d\n", linkqueue_length(queue));

//列印佇列對頭元素

printf("the queue's header:%d\n", *((int*)linkqueue_header(queue)));

//出佇列

while (linkqueue_length(queue) > 0)

printf("\n");

//銷毀佇列

linkqueue_destory(queue);

system("pause");

return;

}

資料結構(17)佇列的鏈式儲存結構和雙端佇列

目錄 1 佇列的鏈式儲存 2 鏈式佇列的基本操作 2.1 初始化 2.2 判隊空 2.3 入隊 2.4 出隊 3 雙端佇列 3.1 輸出受限的雙端佇列 3.2 輸入受限的雙端佇列 佇列的鏈式表示稱為鏈佇列 它實際上是乙個同時帶有隊頭指標和隊尾指標的單鏈表。頭指標指向隊頭結點。尾指標指向隊尾結點,即單...

Day 56 佇列的鏈式結構

使用隊鏈,模擬排隊執行命令,將將要執行的命令存入佇列中,按照先進先出的原則進行執行 ifndef queue h define queue h include include include include include include typedef struct work datatype t...

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

佇列相關基礎內容參我的博文 佇列順序儲存 設計與實現 api函式 佇列也是一種特殊的線性表 可以用線性表鏈式儲存來模擬佇列的鏈式儲存。主要 linkqueue.h 佇列鏈式儲存api宣告 ifndef linkqueue h define linkqueue h typedef void linkq...