C語言資料結構之佇列的實現(鍊錶實現)

2021-10-09 05:09:00 字數 1764 閱讀 9532

tips:前些天學習了鍊錶和棧,今天來看看c語言資料結構之佇列的實現以及佇列的各種操作。

佇列的特點是先進先出,後進後出,因此我們很容易就能夠想到用單鏈表的尾插法,和頭部刪除法去實現佇列的入隊和出隊的操作。

首先我們來看一下佇列的各種操作的實現思路以及具體實現過程

準備工作:

//定義結點

typedef

struct tag

node,

*pnode;

//定義佇列

typedef

struct tagqueue

queue,

*pqueue;

//測試輸出佇列元素

void

print_queue

(pqueue p)

printf

("------------------------------------------\n");

}

1、入隊(enqueue)思路:

具體實現:

//入隊

void

enqueue

(pqueue p,

int val)

else

}

2、出隊(dequeue)思路:

具體實現:

//出隊

void

dequeue

(pqueue p)

else

}

3、判斷佇列是否為空(isempty)思路:

總之判斷方法很多,大家可以盡情發揮。

具體實現:

//判斷佇列是否為空

intisempty

(pqueue p)

至此佇列的基本操作我們已經全部實現了,接下來我們在main()函式中測試一下:

int

main()

//列印佇列元素

printf

("佇列中的元素為:\n");

print_queue

(&que)

;//判斷佇列是否為空if(

isempty

(&que)

)else

printf

("------------------------------------------\n");

while

(printf

("是否出隊?y/n:"),

scanf

("%c"

,&panduan)

!=null

)else

printf

("---------------------------------\n");

}else

if(panduan ==

'n')

}return0;

}

實現結果:

佇列的操作到目前來說已經實現,希望對大家的學習能夠有所幫助,加油!

tips:為了不讓生活留下遺憾和後悔,我們應該盡可能地抓住一切改變生活的機會。

C資料結構 佇列 鍊錶實現

佇列 queue 是具有兩個特殊屬性的鍊錶。第一,新項只能新增到鍊錶的末尾 第二,只能從鍊錶的開頭移除項。可以把佇列想象成排隊買票的人,你從隊尾加入佇列,買完票後從隊首離開。佇列是一種 先進先出 first in first out,fifo 的資料形式。queue.h ifndef queue h...

資料結構 C語言鍊錶實現

資料結構 c語言鍊錶實現 目錄 靜態單鏈表實現 動態單鏈表實現 雙向鍊錶實現 迴圈單鏈表 我學資料結構的時候也是感覺很困難,當我學完後我發現了之所以困難時因為我沒有系統的進行學習,而且很多教授都只是注重資料結構思想,而忽略了 方面,為此我寫了這些博文給那些試圖自學資料結構的朋友,希望你們少走彎路 我...

資料結構之雙向鍊錶的實現(C語言)

在單鏈表中有了next指標,這就使得我們要查詢的下一結點的時間複雜度為o 1 可是如果我們要查詢的是上一結點的話,那麼最壞的時間複雜度就是o n 因此我們每次都要從頭遍歷開始查詢。為了克服單向性這一缺點,設計出了雙向鍊錶 double linked list 是在單鏈表的每個結點中,在設定乙個指向其...