主题:作业还差点不够完善,哪位大侠指点一下
yglg003
[专家分:0] 发布于 2006-05-05 15:01:00
000000000000000000000000000000000000000000000000000000000000000000000000000
以下是源代码:
回复列表 (共3个回复)
沙发
yglg003 [专家分:0] 发布于 2006-05-05 15:05:00
.MODEL SMALL
.STACK
.DATA
MSG1 DB 'Please input the root node:$'
MSG2 DB 0ah,0dh,'Please input the left nood : $'
MSG3 DB 0ah,0dh,'Please input the right nood : $'
MSG4 DB 0ah,0dh,'Has the left subnode of $'
MSG5 DB 0ah,0dh,'Has the right subnode of $'
MSG6 DB '?(y/n):',0AH,0DH,'$'
MSG7 DB 0AH,0DH,'The preorder is :$'
MSG8 DB 0AH,0DH,'The inder is : $'
MSG9 DB 0AH,0DH,'The postorder :$'
PRE_MSG DB 64 DUP (' ') ,'$'
IN_MSG DB 64 DUP (' ') ,'$'
POST_MSG DB 64 DUP (' ') ,'$'
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
XOR SI,SI
XOR DI,DI
XOR BX,BX
MOV AL,23H ;先将#放入栈
PUSH AX
MOV AH,09H
LEA DX,MSG1 ;提示输入根节点
INT 21H
;输出字符串
LEFT:
MOV AH,01H
INT 21H
PUSH AX
MOV PRE_MSG[SI],AL
INC SI ;输入并存储根节点存储在前序数组里
MOV AH,09H
LEA DX,MSG4
INT 21H ;问节点有没有左子
POP AX
MOV AH,02H
MOV DL,AL
INT 21H ;显示上次输入的节点
PUSH AX
MOV AH,09H
LEA DX,MSG6
INT 21H
MOV AH,01H
INT 21H
CMP AL,79H ;输入判断信息并判断
JNZ RIGHT ;如不是跳到RIGHT
MOV AH,09H
LEA DX,MSG2
INT 21H
JMP LEFT ;等于则循环
环
板凳
yglg003 [专家分:0] 发布于 2006-05-05 15:06:00
RIGHT:
POP cX
MOV IN_MSG[DI],cL ;取出最下面的左节点并 进中序存储数组
INC DI
PUSH cX
MOV AH,09H
LEA DX,MSG5 ;问有没有右子
INT 21H
POP AX
MOV AH,02H
MOV DL,AL
INT 21H ;输出字符并显示
PUSH AX
MOV AH,09H
LEA DX,MSG6
INT 21H
MOV AH,01H
INT 21H
CMP AL,79H ;将输入数与y比较
JNZ POST
MOV AH,09H
LEA DX,MSG3
INT 21H ;提示输入右节点
POP DX
MOV DH,1
PUSH DX ;只要没左子数,有右子数的数,高位加标志1
JMP LEFT ;跳到LEFT循环
POST:
POP AX
MOV POST_MSG[BX],AL ;取出接点并放进后序数组
INC BX
POP AX
CMP AL,23H ;POP出的数与#比,如同就打印输出
PUSH AX
JZ PRINT ;如果相等就说明栈空,进行打印输出结果
POP DX
CMP DH,1
PUSH DX
JZ post
JMP RIGHT
;----------------------------------------
PRINT:
MOV AH,09H
LEA DX,MSG7
INT 21H ;前序输出提示
MOV AH,09H
LEA DX,PRE_MSG
INT 21H ;输出前序
MOV AH,09H
LEA DX,MSG8
INT 21H ;中序输出提示
MOV AH,09H
LEA DX,IN_MSG
INT 21H ;输出中序
MOV AH,09H
LEA DX,MSG9
INT 21H
MOV AH,09H
LEA DX,POST_MSG
INT 21H
mov ax,4c00h
int 21h
main endp
end main
3 楼
yglg003 [专家分:0] 发布于 2006-05-05 15:09:00
这是一个二叉树以及遍历的程序,基本上差不多了,但是要求控制层数最多为5层,哪位高手帮忙指点一下,谢了!
我来回复