劍指offer 資料結構 陣列和指標(基礎知識)

2021-07-13 23:23:47 字數 889 閱讀 6164

資料結構一直是技術面試的重點,大多數面試題都是圍繞著陣列、字串、鍊錶、樹、棧以及佇列這幾種常見的資料結構展開的。

陣列和字串是兩種最基本的資料結構,用連續記憶體分別儲存數字和字元。

在c/c++中,陣列和指標是相互關聯又有區別的兩個概念。當我們宣告乙個陣列時,其陣列的名字也是乙個指標,該指標指向陣列的第乙個元素。我們可以用乙個指標來訪問陣列。值得注意的是,c/c++沒有記錄陣列的大小,因此用指標訪問陣列中的元素時,程式設計師要確保沒有超出陣列的邊界。通過小例子來了解陣列和指標的區別。

#include

using

namespace

std;

int getsize( int data )

int main()

; int size1 = sizeof( data1 );

int *data2 = data1;

int size2 = sizeof( data2 );

int size3 = getsize( data1 );

cout

<< size1 <<" "

<< size2 << " "

<< size3 << endl;

return

0;}

在64位機上輸出的是 20 8 8.

data1 是乙個陣列,sizeof(data1)求陣列的大小,陣列包含5個整數每個整數佔4個位元組,因此總共是20個位元組。

data2 宣告為指標。在 32 位上,對任意指標求 sizeof 結果是 4, 64 位上是8 。

在c/c++中,當陣列作為函式的引數進行傳遞時,陣列就會自動退化為同型別的指標。因此,儘管函式getsize的引數data被宣告為陣列,但它會退化為指標,sizeof的結果仍為8

資料結構(劍指offer)(堆疊)(python)

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 思路 用空間換時間,用乙個輔助棧記錄當前棧中的最小值。輔助棧元素個數和資料棧保持一樣的數目。例如一次壓入資料棧數字串行為 3,2,4,1,5 那麼一次壓入輔助棧的為 3,2,2,1,1 當每次壓入資料棧...

劍指offer 五) 資料結構 棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 程式 思路 利用乙個輔助棧來存放最小值 棧 3,4,2,5,1 輔助棧 3,3,2,2,1 每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂 當出棧時,輔助棧也要出棧 這種做法...

劍指offer 資料結構類題目()

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊時資料存到stackin,出隊時資料從stackout彈出。執行入隊操作時,資料源源不斷的壓入棧stackin。執行出隊操作時,stackout為空,則把stackin裡的資料全部彈出壓倒stackout中,當st...