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...