適用於鄰接表:儲存圖和樹
//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...