演算法筆記之棧 佇列 鍊錶

2021-07-11 01:34:47 字數 1310 閱讀 4663

1, 佇列:

基本概念: 佇列是一種特殊的線性結構,它只允許在佇列的首部(head)進行刪除操作(稱為出隊);而在佇列的尾部(tail)進行插入操作(入隊)。而當佇列中沒有元素時(即 head == tail),稱為空佇列。first in first out(fifo)原則 

演算法應用:佇列是廣度優先搜尋以及佇列優化的 bellman_ford 最短路演算法的核心資料結構。

基本元素:乙個陣列,兩個變數

其封裝結構休型別:

struct queue ;
定義結構體變數:struct queue q;

佇列操作的簡單damo:

//初始化

void init()

//是否為空佇列:返回1為空;

int isempty()

//入佇列

boolean push(int data)

//例項這裡後面再補上

2, 棧:

基本概念:棧限定為只能在一端進行插入和刪除操作,是一種後進先出的資料結構。

基本元素: 乙個一維陣列,乙個指向棧頂的變數 top:

int data[100];

int top = 0;

//例項這裡後面再補上

3, 鍊錶:

基本概念:

實現鍊錶: 1,需要使用指標和動態分配記憶體函式 malloc來實現。

#include int *p;

p = (int *) malloc(sizeof(int)); //int* 以 int 4個位元組的連續記憶體來作為乙個整體來存放整數。

其封裝結構體:

struct node

建立鍊錶基本步驟如下:

//頭指標的作用是方便以後從頭遍歷整個鍊錶。

struct node *head;

// 頭指標初始為空

head = null;

//建立第乙個結點

struct node *p;

//動態申請空間

p = (struct node *) malloc (sizeof(struct node));

scanf("%d",a);

//將資料儲存到當前結點

p->data = a;

p->next = null;

if(head == null) else

q = p;//導向新結點;

《演算法》筆記 鍊錶 棧和佇列

棧 佇列 表頭插入 第一步 儲存好首節點 第二步 設定新結點 第三步 讓儲存好的首節點指向新結點 node oldfirst first first new node first.item 110 first.next oldfirst 表尾插入 node oldlast last last new...

啊哈!演算法 棧 佇列 鍊錶

特點 管子,兩邊開口,先進先出 first in first out 佇列的三個基本元素 乙個陣列,兩個變數 include using namespace std struct queue typedef struct queue queue 將 struct queue 重新命名為 queue ...

棧佇列鍊錶演算法總結

1.佇列 struct queue 2.棧棧的基本操作 定義棧 stacks 入棧 定義棧元素 s.push i 出棧 刪除棧元素 s.pop 返回棧頂元素的值 s.top 判斷棧是否為空 s.empty 值為0說明不空 值為1說明棧為空 棧的用法例項 include include using n...