棧 學習筆記

2021-09-25 14:56:16 字數 869 閱讀 9947

1.實現乙個棧,支援入棧,出棧,查詢棧中最小值的功能,時間複雜度要求為常數

用陣列模擬棧操作

查詢最小值的話可以另外使用乙個陣列記錄當前下標的最小值

#includeusing namespace std;

const int maxn = 1e5;

struct queue

void push(int x)

void pop()

int getmin()

};int main()

2.使用兩個棧解決問題

題目:題目資料量是1e6 

可以使用乙個棧表示游標前,乙個棧表示游標後,然後維護游標前的最小字首和即可

#includeusing namespace std;

const int maxn = 1e6 + 7;

int q1[maxn], q2[maxn];

int sum1[maxn], max_sum1[maxn]; //sum1 為游標前字首和 max_sum1為維護最小游標前字首和

int ind1, ind2;

void insert(int x)

void del()

void lef()

}void rig()

}int query(int x)

int main()

else if (s[0] == 'd') del();

else if (s[0] == 'l') lef();

else if (s[0] == 'r') rig();

else

} }return 0;

}

學習筆記 棧

顯然,由於只能對一端進行操作,棧中的元素是先進後出的。棧的寫法 手寫棧int s n sz s i 表示棧中從下往上數第i個數的值,n表示棧的大小,sz表示當前棧中元素數量 void push int x void pop int top stl stacks 引數也是資料型別,這是棧的定義方式 s...

棧 學習筆記 總結

棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧的頂。對棧的基本操作有push 進棧 和 pop 出棧 前者相當於插入,後者則是刪除最後插入的元素。所以棧有時叫做lifo 後進先出 表。part 1 棧的基本了解 對棧的第一次接觸也是在c語言的學習中。不同的資料存放...

棧溢位學習筆記

棧溢位 一 原理 棧溢位指的是程式向棧中某個變數中寫入的位元組數超過了這個變數本身所申請的位元組數,因而導致與其相鄰的棧中的變數的值被改變。這種問題是一種特定的緩衝區溢位漏洞,類似的還有堆溢位,bss 段溢位等溢位方式。棧溢位漏洞輕則可以使程式崩潰,重則可以使攻擊者控制程式執行流程。此外,我們也不難...