?? 8.3.2利用鄰接表的圖廣度優先遍歷算法.txt
字號:
GRAPH EQU 20H
QUEUE EQU 1FH
OUT EQU 21H
NODE EQU 30H
FG EQU 40H
D EQU 05H
F DATA 3CH
R DATA 3DH
N DATA 3EH
K DATA 3FH
TEST:
MOV SP,#5FH
MOV DPTR,#GRA
MOV P2,#GRAPH
MOV R0,#0
MOV R2,#4AH
CPY:
CLR A
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,CPY
MOV P2,#GRAPH
MOV R0,#NODE
MOVX A,@R0
JZ STOP
INC A
MOV N,A
MOV K,#1
TEST1:
MOV DPH,#OUT
MOV DPL,#0
MOV R2,#0
CLR A
CLEAR:
MOVX @DPTR,A
INC DPTR
DJNZ R2,CLEAR
MOV P2,#GRAPH
MOV R0,#NODE
MOV DPH,#OUT
MOV DPL,#0
MOVX A,@R0
MOVX @DPTR,A
INC DPTR
MOV R7,A
MOV R0,#FG
INC R0
CLRF: CLR A
MOVX @R0,A
INC R0
DJNZ R7,CLRF
LCALL SETNULL
MOV A,K
LCALL DATAIN
LCALL BFSL
INC K
MOV A,K
CJNE A,N,TEST1
STOP: LJMP STOP
;出發點為1時的遍歷順序:ABHCIGDFE
;出發點為2時的遍歷順序:BACIHDFGE
;出發點為3時的遍歷順序:CBDFAIEGH
;出發點為4時的遍歷順序:DCEBFGAIH
;出發點為5時的遍歷順序:EDFGCIHBA
;出發點為6時的遍歷順序:FCEGIBDHA
;出發點為7時的遍歷順序:GEFHDCIAB
;出發點為8時的遍歷順序:HAGIBEFCD
;出發點為9時的遍歷順序:IBFHACEGD
BFSL:
MOV A,F
XRL A,R
JZ BFSEND
LCALL DATAOUT
MOV R2,A
ADD A,#NODE
MOV R0,A
MOVX A,@R0
MOVX @DPTR,A
INC DPTR
MOV A,R2
ADD A,#FG
MOV R1,A
MOV A,#0FFH
MOVX @R1,A
MOV A,R2
DEC A
MOV B,#D
MUL AB
MOV R1,A
LOOP:
MOVX A,@R1
JZ BFSL
MOV R2,A
ADD A,#FG
MOV R0,A
MOVX A,@R0
JNZ LOOPE
MOV A,R2
LCALL DATAIN
MOV A,#1
MOVX @R0,A
LOOPE:
INC R1
LJMP LOOP
BFSEND:
RET
SETNULL:
MOV A,#0FFH
MOV F,A
MOV R,A
RET
DATAIN:
PUSH DPH
PUSH DPL
INC R
MOV DPL,R
MOV DPH,#QUEUE
MOVX @DPTR,A
POP DPL
POP DPH
RET
DATAOUT:
PUSH DPH
PUSH DPL
INC F
MOV DPL,F
MOV DPH,#QUEUE
MOVX A,@DPTR
POP DPL
POP DPH
RET
;2000H: 02 08 00 00 00
;2005H: 01 03 09 00 00
;200AH: 02 04 06 00 00
;200FH: 03 05 00 00 00
;2014H: 04 06 07 00 00
;2019H: 03 05 07 09 00
;201EH: 05 06 08 00 00
;2023H: 01 07 09 00 00
;2028H: 02 06 08 00 00
;2030H: 09 41 42 43 44 45 46 47 48 49
;2040H: 00 00 00 00 00 00 00 00 00 00
GRA:
DB 02H,08H,00H,00H
DB 00H,01H,03H,09H
DB 00H,00H,02H,04H
DB 06H,00H,00H,03H
DB 05H,00H,00H,00H
DB 04H,06H,07H,00H
DB 00H,03H,05H,07H
DB 09H,00H,05H,06H
DB 08H,00H,00H,01H
DB 07H,09H,00H,00H
DB 02H,06H,08H,00H
DB 00H,00H,00H,00H
DB 09H,41H,42H,43H
DB 44H,45H,46H,47H
DB 48H,49H,00H,00H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -