模擬單向雙向鍊錶 模擬棧與佇列 KMP

2021-10-10 05:32:12 字數 2404 閱讀 6595

單鏈表

模擬單鏈表

#include.h>

using namespace std;

const int n

=1e5+10

;int head,ne[n]

,e[n

],idx;

int n;

// head 指向頭節點

// ne[i]指向第i個節點的下乙個節點

// e[i] 第i個節點的值

// idx 儲存當前已經用到了哪個點

void

init()

//將x插到頭節點

void

add_to_head

(int x)

// 將x插到k下標的後面

void

add(int k,int x)

// 刪除下標為k的後面的數

void

remove

(int k)

int main()

else

if(c==

'd')

else

if(c ==

'i')

}for

(int i=head;i!=-1

;i=ne[i]

) cout<<<

" ";

return0;

}

雙向鍊錶
#include.h>

using namespace std;

const int n

=1e5+10

;int l[n]

,r[n

],e[n]

,idx;

int n;

/*l[i] 指向i節點的左邊

r[i] 指向i節點的右邊

e[i] i節點的值

*/void

init()

//在k的右邊加乙個數

// k的左邊 add(l[k],x);

void

add(int k,int x)

//刪除第k個數

void

remove

(int k)

int main()

else

if(c==

"r")

else

if(c==

"d")

else

if(c==

"il"

)else

if(c==

"ir")}

for(int i=r[0]

;i!=

1;i=r[i]

) cout<<<

" ";

return0;

}

模擬棧、佇列的基本操作
#inclcude.h>

using namespace std;

const int n

=1e5+10

;// tt表示棧頂

int stk[n]

, tt =0;

// 向棧頂插入乙個數

stk[

++ tt]

= x;

// 從棧頂彈出乙個數

tt --

;// 棧頂的值

stk[tt]

;// 判斷棧是否為空

if(tt >0)

----

----

----

----

----

----

----

----

----

-------

#include.h>

using namespace std;

// hh 表示隊頭,tt表示隊尾

int q[n]

, hh =

0, tt =-1

;// 向隊尾插入乙個數

q[++ tt]

= x;

// 從隊頭彈出乙個數

hh ++

;// 隊頭的值

q[hh]

;// 判斷佇列是否為空

if(hh <= tt)

else

empty;

acwing  

#include.h>

using namespace std;

const int n

=1e5+10

;int n,m;

char p[n]

,s[n];

int ne[n]

;int main()

//匹配過程

for(int i=

1,j=

0;i<=m;i++)}

return0;

}

用單向鍊錶模擬佇列

讓 rear 指標指向的節點的 next 指標指向新節點,然後讓 rear 指標指向下乙個節點。每次出佇列時,都讓 font 指標指向 head 節點的下乙個節點。最後從佇列中彈出 front 節點。資料結構 佇列 鍊錶 建立乙個鍊錶模擬佇列 實現 資料入佇列 資料出佇列 顯示佇列 package ...

(基礎) 陣列模擬鍊錶 棧 佇列

適用於鄰接表 儲存圖和樹 head 表示頭結點的下標 e i 表示節點i的值 ne i 表示節點i的next指標是多少 idx 儲存當你已經用到的那個點 int head,e n ne n idx 初始化 void init 將x插到頭結點 void add to head int x 將x插到下標...

鍊錶模擬佇列

佇列是最基礎的資料結構之一,通過構建鍊錶來模擬佇列,更加清晰的理解佇列的意義。這裡是將佇列作為全域性變數來呼叫,因為不用全域性變數的時候出現好多錯誤,最後還是用了全域性變數。上 include using namespace std include includestruct linklist st...