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 的方法來製造機械人。從這種方法出發,製造類人機械人不再是發展更複雜的...
關於結對程式設計的一些感悟
這次專案通過和同學的結對程式設計,對於結對程式設計有了一些自己的感悟。首先,作為駕駛員在 方面,自己原先編寫時會出現的很多格式不規範,不便於讀的地方都能得到糾正,而且對於一些方法的編寫,自己的思路可能不夠簡便,也能得到領航員的修改意見。其次,作為領航員時,能夠很好的鍛鍊自己的閱讀 的能力,同時理解駕...