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...