我從我的講師那里收到了一個使用堆疊制作 HTML 驗證器的任務。我無法圍繞演算法來這樣做,因為堆疊只能執行 LIFO,我應該怎么做才能檢查標簽是否已關閉?可能嗎?任何答案都會有所幫助,因為我已經被困了幾天了。提前致謝!
順便說一句,我的講師給了我一個例子來運行:
<html>
<head>
<title>
Example
</title>
</head>
<body>
<h1>Hello, world</h1>
</body>
</html>
uj5u.com熱心網友回復:
在堆疊中,您將新元素壓入頂部并通過彈出最新元素來洗掉它們。因此,您可以將開始標簽推入堆疊,直到出現結束標簽,然后檢查堆疊頂部的元素是否與結束標簽匹配。如果另一個開始標簽出現在結束標簽之后,只需再次將其推入堆疊并繼續此操作,直到到達堆疊上的最后一個元素。如果每個元素都有匹配的結束標記,則 html 檔案應該是有效的。
偽代碼:
while (has_unresolved_tags) {
if (is_opening_tag) {
stack.push(opening_tag);
} else {
// peek the last element of the stack
if (stack.peek() == closing tag of opening tag) {
stack.pop()
} else {
// not a valid html document, exit
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/445351.html
