c語言考試 優(yōu)先隊列的實(shí)現(xiàn)方式?
優(yōu)先隊列的實(shí)現(xiàn)方式?通常使用堆數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)隊列用于寬度優(yōu)先,堆棧用于深度優(yōu)先。簡要描述如下:廣度優(yōu)先:將節(jié)點(diǎn)添加到隊列時,應(yīng)將其標(biāo)記為已遍歷。在遍歷過程中,對于隊列的第一個元素,它應(yīng)該遍歷一步中可以
優(yōu)先隊列的實(shí)現(xiàn)方式?
通常使用堆數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)
隊列用于寬度優(yōu)先,堆棧用于深度優(yōu)先。簡要描述如下:
廣度優(yōu)先:將節(jié)點(diǎn)添加到隊列時,應(yīng)將其標(biāo)記為已遍歷。在遍歷過程中,對于隊列的第一個元素,它應(yīng)該遍歷一步中可以到達(dá)的所有節(jié)點(diǎn)。如果它被標(biāo)記為未遍歷,則應(yīng)將其添加到隊列中。從第一個元素開始,遍歷后將列出一步中可以到達(dá)的所有節(jié)點(diǎn)。
深度優(yōu)先:遍歷節(jié)點(diǎn)a時,如果標(biāo)記為未遍歷,則將其放在堆棧上,并遍歷一步即可直接到達(dá)的節(jié)點(diǎn)。如果標(biāo)記為未遍歷,則將其放在堆棧上并標(biāo)記為已遍歷,然后執(zhí)行類似于A的操作。否則,找到一步可以直接到達(dá)的節(jié)點(diǎn)并執(zhí)行類似的操作。在遍歷一個步驟中可以直接到達(dá)的所有節(jié)點(diǎn)之前,a將從堆棧中退出。
使用“一步可到達(dá)的節(jié)點(diǎn)”而不是“相鄰節(jié)點(diǎn)”時,會考慮到有向圖因素。
您可以找到特定的圖形,然后使用廣度和深度算法再次搜索。您可以在每個步驟手動修改隊列和堆棧,以了解發(fā)生了什么。