一步一步寫演算法(之線性佇列)

2021-05-28 15:48:38 字數 1104 閱讀 4205

這裡的線性結構實際上指的就是連續記憶體的意思,只不過使用「線性」這個詞顯得比較專業而已。前面一篇部落格介紹了現象結構的處理方法,那麼在這個基礎之上我們是不是新增一些屬性形成一種新的資料結構型別呢?答案是肯定的,佇列便是其中的一種。

佇列的性質很簡單:

(1)佇列有頭部和尾部

(2)佇列從尾部壓入資料

(3)佇列從頭部彈出資料

那麼連續記憶體下的佇列是怎麼實現的呢?

a)設計佇列資料結構

typedef struct _queue_node

queue_node;

b)申請佇列記憶體

queue_node* alloca_queue(int number)

pqueuenode->length = number;

return pqueuenode;

}

c)釋放佇列記憶體

status delete_queue(const queue_node* pqueuenode)

d)把資料壓入佇列

status insert_queue(queue_node* pqueuenode, int value)

e)把資料彈出佇列

status get_queue_data(queue_node* pqueuenode, int* value)

f)統計當前佇列中有多少資料

int  get_total_number(const queue_node* pqueuenode)

g)檢視佇列中初始化的時候總長度是多少

int  get_total_number(const queue_node* pqueuenode)

一步一步寫演算法(之 A 演算法)

在前面的部落格當中,其實我們已經討論過尋路的演算法。不過,當時的示例圖中,可選的路徑是唯一的。我們挑選乙個演算法,就是說要把這個唯一的路徑選出來,怎麼選呢?當時我們就是採用窮盡遞迴的演算法。然而,今天的情形有點不太一樣了。在什麼地方呢?那就是今天的路徑有n條,這條路徑都可以達到目的地,然而我們在挑選...

一步一步寫演算法(之 A 演算法)

在前面的部落格當中,其實我們已經討論過尋路的演算法。不過,當時的示例圖中,可選的路徑是唯一的。我們挑選乙個演算法,就是說要把這個唯一的路徑選出來,怎麼選呢?當時我們就是採用窮盡遞迴的演算法。然而,今天的情形有點不太一樣了。在什麼地方呢?那就是今天的路徑有n條,這條路徑都可以達到目的地,然而我們在挑選...

一步一步寫演算法 之 A 演算法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!在前面的部落格當中,其實我們已經討論過尋路的演算法。不過,當時的示例圖中,可選的路徑是唯一的。我們挑選乙個演算法,就是說要把這個唯一的路徑選出來,怎麼選呢?當時我們就是採用窮盡遞迴的演算法。然而,今天的情形有點不太一樣了。在什麼地方呢?那就是今天的...