?? algo0803.cpp
字號(hào):
void MarkList(GList GL) { // 算法8.3
// 遍歷非空廣義表GL(GL!=NULL且GL->mark==0),
// 對(duì)表中所有未加標(biāo)志的結(jié)點(diǎn)加標(biāo)志
GList q = NULL, p = GL, t = NULL; // t指示p的母表
int finished = FALSE;
while (!finished) {
while (p->mark==0) {
p->mark = 1;
// MarkHead(p)的細(xì)化:
q = p->ptr.hp; // q指向*p的表頭
if (q && q->mark==0) {
if (q->tag==ATOM) q->mark = 1; // ATOM,表頭為原子結(jié)點(diǎn)
else // 繼續(xù)遍歷子表
{ p->ptr.hp = t; p->tag = ATOM; t = p; p = q; }
}
} // 完成對(duì)表頭的標(biāo)志
q = p->ptr.tp; // q指向*p的表尾
if (q && q->mark==0) { // 繼續(xù)遍歷表尾
p->ptr.tp = t; t = p; p = q;
} else { // BackTrack(finished)的細(xì)化:
while (t && t->tag==LIST) { // LIST,表結(jié)點(diǎn),從表尾回溯
q = t; t = q->ptr.tp; q->ptr.tp = p; p = q;
}
if (!t) finished = TRUE; // 結(jié)束
else { // 從表頭回溯
q = t; t = q->ptr.hp; q->ptr.hp = p;
p = q; p->tag = LIST;
} // 繼續(xù)遍歷表尾
}
}
} // MarkList
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -