個人隨筆 關於棧的一些感悟

2021-09-28 18:52:41 字數 1983 閱讀 5067

1、定義棧:

#define maxsize 100

typedef

int datatype;

typedef

struct

sequence_stack;

// 棧(順序儲存)初始化 

//檔名seqsinit.c, 函式名init_sequence_stack()

void

init_sequence_stack

(sequence_stack *st)

// 判斷棧(順序儲存)是否為空

// 檔名seqsempt.c, 函式名is_empty_sequence_stack()

// 返回值型別:int型別。1表示空,0表示非空

intis_empty_stack

(sequence_stack st)

//取得棧頂(順序儲存)結點值

//檔名seqsfirs.c, 函式名get_top()

datatype get_top

(sequence_stack st)

else

return st.a[st.top-1]

;}// 棧(順序儲存)的插入操作

//檔名seqspush.c, 函式名push()

void

push

(sequence_stack *st,datatype x)

st->a[st->top]

=x; st->top++;}

// 棧(順序儲存)的刪除操作

// 檔名seqspop.c, 函式名pop()

void

pop(sequence_stack *st)

st->top--

;}

棧依據儲存結構可分為:順序棧、鏈式棧。對於c語言,使用順序棧時,可用資料儲存資料!!!

經典案例1:

利用棧,我們可以解答:

/*             判斷表示式括號是否匹配              */

/* 檔名seqmatch.c,函式名match_huohao() */

/*******************************************/

intmatch_kuohao

(char c)

':if(

!is_empty_sequence_stack

(s)&&

get_top

(s)==

'else

return0;

case

']':if(

!is_empty_sequence_stack

(s)&&

get_top

(s)==

'[')

else

return0;

case

')':if(

!is_empty_sequence_stack

(s)&&

get_top

(s)==

'(')

else

return0;

} i++;}

return

(is_empty_sequence_stack

(s))

;/*棧空則匹配,否則不匹配*/

}

leetcode**:

bool isvalid

(char

* s)':

if( j!=0&&

(s_array[j-1]

=='j++;}

if(j ==0)

return true;

else

return false;

}

關於遞迴的一些感悟

前些天筆試思科時碰到了一道c的遞迴題目,當時一直糾結在退出遞迴時,其輸出應該只有最後一次printf吧。好吧,我承認我真的很菜,不過我現在弄明白了,遞迴說白了就是自己呼叫自己,當遞迴深度條件不滿足時就退出了遞迴,關鍵點在於退出遞迴後的函式是如何返回的。其實我們可以把遞迴認為是幾個函式在一層層的呼叫,...

關於機器學習的一些感悟

1 通過機器的學習 大規模 資料庫 複雜的感測器和巧妙的演算法,來完成分散的任務 是人工智慧的最新定義。2 mit 實驗室的機械人專家 rodney brooks 提出,要以 具身智慧型 embodied intelligence 的方法來製造機械人。從這種方法出發,製造類人機械人不再是發展更複雜的...

關於結對程式設計的一些感悟

這次專案通過和同學的結對程式設計,對於結對程式設計有了一些自己的感悟。首先,作為駕駛員在 方面,自己原先編寫時會出現的很多格式不規範,不便於讀的地方都能得到糾正,而且對於一些方法的編寫,自己的思路可能不夠簡便,也能得到領航員的修改意見。其次,作為領航員時,能夠很好的鍛鍊自己的閱讀 的能力,同時理解駕...