七 棧的應用例項(一)

2021-07-02 21:01:54 字數 862 閱讀 5883

1、提出問題

在c語言中有一些符號是成對匹配出現的

括號: ( ), [ ], , <>

引號: 『 『, 「 「

檢查它們是否成對出現是所有編譯器實現的基本功能,可用於基本的語法檢查,這個問題就可通過棧來實現!

2、演算法實現思路

3、演算法具體實現

/*

掃瞄字串中的符號是否匹配

*/bool scanner(const

char *code)

}else

}//如果棧頂元素是雙引號和單引號,直到code[i]也為雙引號和單引號,才執行下面的isright判斷,

//否則全部跳過

if(top != null)

}//如果遇到右值,便將棧頂彈出,與該右值進行匹配,匹配不成功,則**有語法錯誤

if(isright(code[i]))

}i++;

} //所有字元檢查完成後,如果棧中還有剩餘,則**有問題,否則,成功!

//判斷code[i] == '\0'的原因是:如果還沒掃瞄完所有字元,那麼即使棧為空,也是失敗的

if( (linkstack_size(stack) == 0) && (code[i] == '\0'))

else

linkstack_destroy(stack);

return ret;

}

5、小結

編譯步驟:

0.1 解壓縮:tar -zxvf scanner-1.1.tar.gz

0.2 進入目錄:./configure

0.3 生成seqlist:make

0.4 執行程式:./scanner

鏈棧的例項應用

利用棧的基本操作實現將任意乙個十進位制整數轉化為r進製整數演算法 r為二至九之間 由計算機基礎知識可知,把乙個十進位制整數x轉換為任一種r進製數得到的是乙個r進製的整數,假定為y,轉換方法是逐次除基數r取餘法。具體做法是 首先用十進位制整數x除以基數r,得到的整餘數是r進製數y的最低位y0,接著以x...

Python實現棧,及棧的應用例項

棧 stack 是限定在表尾進行插入或刪除操作的線性表。因此,對於棧來說,表尾端有其特殊含義,稱為棧頂 top 表頭被稱為棧底 bottom 構造空棧 def init self,size self.size size self.stack 輸出棧 def str self return str s...

棧的主要特點及例項應用

學習資料結構的知識,第一課便是棧結構。要注意棧是一端封閉,另一端開口的資料儲存結構,所以存的時候就像是們盛飯的時候,碗裡的飯是慢慢多到頂的,取出來的時候就像吃的時候,慢慢到底。這就是說 先入的後出,或者說後入先出。下面是實現棧結構的 超超 2016 10 5日 include using names...