參考教科書上的一個應用例子,用棧來分析一行輸入中的括號brackets是否匹配。用stdin讀取用戶輸入,並輸出檢查結果。exit 退出。spa
注意這行代碼:code
import 'stack.dart';
// 須要與上一個Stack的例子在同一個文件夾下。
1 import 'dart:io'; 2 import 'stack.dart'; 3 4 void main() { 5 var ins = stdin.readLineSync(); 6 while (ins != 'exit') { 7 print(check(ins)); 8 ins = stdin.readLineSync(); 9 } 10 } 11 12 bool check(String ins) { 13 var stack = Stack<String>(ins.length); 14 for (var i = 0; i < ins.length; i++) { 15 switch (ins[i]) { 16 case '{': 17 case '[': 18 case '(': 19 stack.push(ins[i]); 20 break; 21 case ')': 22 if (stack.isEmpty || stack.pop() != '(') return false; 23 break; 24 case ']': 25 if (stack.isEmpty || stack.pop() != '[') return false; 26 break; 27 case '}': 28 if (stack.isEmpty || stack.pop() != '{') return false; 29 break; 30 default: 31 break; 32 } 33 } 34 return stack.isEmpty; 35 }