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