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

2022-07-26 03:09:15 字數 1324 閱讀 7680

適用於鄰接表:儲存圖和樹

//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插到下標是k的點後面

void add(int k ,int x)

//將下標是k的點後面的點刪掉

void remove(int k)

優化某些問題

先進後出

int stk[n],tt;

//插入

stk[++tt] = x;

//彈出

tt--;

//判斷棧是否為空

if(tt > 0) not empty

else empty

//棧頂

stk[tt];

給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出-1。

輸入格式

第一行包含整數n,表示數列長度。

第二行包含n個整數,表示整數數列。

輸出格式

共一行,包含n個整數,其中第i個數表示第i個數的左邊第乙個比它小的數,如果不存在則輸出-1。

資料範圍

1≤n≤105

1≤數列中元素≤109

輸入樣例:

5

3 4 2 7 5

輸出樣例:

-1 3 -1 2 2

#includeusing namespace std;

const int n = 1e5+10;

int stk[n],tt;

int main()

puts("");

hh=0,tt=-1;

for(int i=0;iq[hh]) hh++;

while(hh<=tt && a[q[tt]]<=a[i]) tt--;

q[++tt] =i;

if(i>=k-1) printf("%d ",a[q[hh]]);

}}

陣列 鍊錶 棧 佇列

陣列用一塊連續的記憶體空間,來儲存相同型別的一組資料,最大的特點就是支援隨機訪問,但插入 刪除操作也因此變得比較低效,平均情況時間複雜度為 o n 在平時的業務開發中,我們可以直接使用程式語言提供的容器類,但是,如果是特別底層的開發,直接使用陣列可能會更合適。鍊錶跟陣列一樣,也是非常基礎 非常常用的...

鍊錶模擬佇列

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

鍊錶模擬棧

棧是只有乙個埠的容器,只能從一邊進行放入和取出的操作。棧的特點是先進後出,後進先出。以下是用鍊錶模擬棧的基本操作 includeusing namespace std templatestruct node templateclass tstack templatetstack tstack tem...