十三 佇列的鏈式儲存結構

2021-07-02 23:15:39 字數 2617 閱讀 5584

1、鏈式儲存的定義

2、基於鍊錶的實現

佇列是一種特殊的順序表,所以可以基於鍊錶來實現佇列的鏈式儲存結構!

資料結構的定義

//因為內部使用的是順序鍊錶,所以有如下的定義

typedef

struct _struct_linkqueue

tlinkqueuenode;

部分**:

/*

建立乙個佇列

如果成功,返回乙個佇列指標,否則返回null

*/linkqueue *linkqueue_create()

/* 銷毀乙個佇列

*/void linkqueue_destroy(linkqueue *

queue)

/* 清空佇列中的元素

*/void linkqueue_clear(linkqueue *

queue)}/*

在隊尾新增乙個元素

如果成功,返回1,失敗返回0

*/queue, linkqueuenode *item) //o(n)

//如果插入沒有成功,則釋放tnode

if (!iret)

return iret;}/*

在隊頭移出乙個元素

如果成功,返回被移出的元素指標,否則,返回null

*/linkqueuenode *linkqueue_retrieve(linkqueue *

queue) //o(1)

return ret;}/*

獲取隊頭元素

如果成功,返回隊頭元素指標,否則,返回null

*/linkqueuenode *linkqueue_header(linkqueue *

queue) //o(1)

return ret;

}

3、鏈式佇列的優化方案

定義乙個front指標,始終指向鍊錶中的第乙個元素

資料結構的定義

//為了保持對外的一致性

typedef

void linkqueue;

typedef

void linkqueuenode;

typedef

struct _struct_linkqueuenode tlinkqueuenode;

struct _struct_linkqueuenode

;//新增加了front和rear指標,分別指向隊頭和隊尾

部分**:

/*

建立乙個佇列

如果成功,返回乙個佇列指標,否則返回null

*/linkqueue *linkqueue_create()

return tqueue;}/*

銷毀乙個佇列

*/void linkqueue_destroy(linkqueue *

queue)}/*

清空佇列中的元素

*/void linkqueue_clear(linkqueue *

queue)

}}/* 在隊尾新增乙個元素

如果成功,返回1,失敗返回0

*/queue, linkqueuenode *item)

else

tqueue->length++;

} //如果插入沒有成功,則釋放tnode

if (!iret)

return iret;}/*

在隊頭移出乙個元素

如果成功,返回被移出的元素指標,否則,返回null

*/linkqueuenode *linkqueue_retrieve(linkqueue *

queue)

}} return ret;}/*

獲取隊頭元素

如果成功,返回隊頭元素指標,否則,返回null

*/linkqueuenode *linkqueue_header(linkqueue *

queue)

} return ret;}/*

獲取佇列元素個數

如果失敗,返回-1

*/int linkqueue_length(linkqueue *

queue)

return iret;

}

編譯步驟:

0.1 解壓縮:tar -zxvf linkqueue-1.0.tar.gz/linkqueue-2.0.tar.gz

0.2 進入目錄:./configure

0.3 生成seqlist:make

0.4 執行程式:./linkqueue

佇列的鏈式儲存結構

佇列的鏈式儲存結構可以建立乙個頭結點,乙個指向頭結點的指標front,乙個指向尾節點的指標rear。新增乙個節點的時候將rear指向新節點,取乙個節點的時候將front指向下個節點的下乙個節點。佇列鏈式儲存.cpp 定義控制台應用程式的入口點。include stdafx.h struct link...

佇列的鏈式儲存結構

1 佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,簡稱為鏈佇列。為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點。空佇列時,front和rear都指向頭結點。鏈佇列的結構為 include using namespace std define ok ...

佇列的鏈式儲存結構

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,我們把它簡稱為鏈佇列。為了操作上的方便,我們將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點,如下圖所示 空佇列時,front和rear都指向頭結點。鏈佇列的結構為 typedef int qelemtype typedef ...