帐号 密码  
 
多路树查找-外部查找(B树)【源代码】

多路树查找-外部查找(B树)【下载及演示说明】

双向链表演示程序【下载及演示说明】

循环链表演示程序【下载及演示说明】

链表【讲解】

动态存储分配之边界标识法演示程序【下载及演示说明】

动态存储分配之边界标识法【讲解】

首次适应算法和最佳适应算法【讲解】

动态存储分配之边界标识法【源代码】

振荡排序算法【讲解】

振荡排序演示程序【下载及演示说明】

树和二叉树相互转化【讲解】

深度优先搜索【下载及演示说明】

深度优先搜索【源代码】

朴素字符串匹配演示程序【下载及演示说明】

当前1/4页
首页 上一页 下一页 尾页

算法讲堂

    本栏目所有文章由本站组织业内技术专家原创而成,用汇编语言向学习者讲解经典问题的编程思想和编程方法。

    本栏目所有文章的版权归本站所有,转载请注明出处为汇编网<www.asmedu.net> 。

    现本栏目的内容处于不断添加中,请随时关注。
算法讲堂-》深度优先搜索【源代码】
    assume cs:code

code segment
        
        RIGHT db "Copyright (c) 2007 www.asmedu.net#"
        
        DFSV  db 16 dup(0)
        
        NODEV db "abcde"
        
        NODE  db 0,0, 0,0, 0,0, 0,0, 0,0
        
        NODES dw NODE1,NODE2,NODE3,NODE4,NODE5
        
        NODE1 dw 0, 1, 0, 1, 0
        NODE2 dw 1, 0, 1, 0, 1
        NODE3 dw 0, 1, 0, 1, 1
        NODE4 dw 1, 0, 1, 0, 0
        NODE5 dw 0, 1, 1, 0, 0
        
start:
        ;图有五个节点
        
        mov ax,cs
        mov ds,ax
        
        call DFSearch
        
        mov ax,4c00h
        int 21h
        
        
;-----------------------------------DFSearch start
        ;深度优先搜索
        
DFSearch:
        push si
        push di
        push ax
        push dx
        push cx
        push bx
        
        mov si,0
        mov di,0
        mov dl,25
        mov byte ptr NODE[di],1
        mov byte ptr NODE[di + 1],-1
        
DFSS:
        push di
        push ax
        push bx
        mov ax,di
        mov bl,2
        div bl
        mov di,ax
        mov al,DFSV[1]  ;DFSV[1]存放要搜索的字符
        cmp NODEV[di],al
        pop bx
        pop ax
        pop di
        
        jne GoOn
        mov DFSV[2],1
        jmp DFSearchReturn
GoOn:
        call DFSF1
        cmp byte ptr DFSV[0],-1
        je DFSS1
        
        mov ax,0
        mov al,DFSV[0]
        mov si,ax
        
        mov ax,di
        mov NODE[si + 1],al
        mov di,si
        
        jmp DFSS
        
DFSS1:
        cmp byte ptr NODE[di + 1],-1
        je DFSearchReturn
        
        mov ax,0
        mov al,NODE[di + 1]
        mov si,ax
        mov di,si
        
        jmp GoOn
        
DFSearchReturn:
        
        mov cx,10
        mov si,0
DFSRS:
        mov byte ptr NODE[si],0
        inc si
        loop DFSRS
        
        pop bx
        pop cx
        pop dx
        pop ax
        pop di
        pop si
        ret
        
;--------function1 start

        ;指定节点是否有未访问的邻近节点
DFSF1:
        push si
        push di
        push ax
        
        mov si,NODES[si]
        mov di,0
        
DFSF1S:

        cmp di,10
        je DFSF1ReturnB
        
        cmp byte ptr cs:[si],0
        je DFSF1S1
        
        cmp byte ptr NODE[di],0
        je DFSF1ReturnA
        
        add si,2
        add di,2
        
        jmp DFSF1S
        
DFSF1S1:
        add si,2
        add di,2
        jmp DFSF1S
        
DFSF1ReturnA:
        mov word ptr NODE[di],1
        mov ax,di
        mov DFSV[0],al
        jmp DFSF1Return

DFSF1ReturnB:
        mov byte ptr DFSV[0],-1

DFSF1Return:
        
        pop ax
        pop di
        pop si
        ret
        
;--------function1 end
        
;-----------------------------------DFSearch end

code ends
end start

[07/10/15]

Copyright C 2006-2024 ASMEDU.NET All Rights Reserved
Email: asmedu@163.com