汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-08-07 21:58] 顺序表算法练习之:删除数据

删除第i(1≤i≤n)个元素的时候, 需要将第i+1个元素依次向前移动一个位置, 删除后表的长度为n-1 。
删除的主要操作是元素前移操作。移动的次数与删除位置i有关,即和输入有关。最好情况下是i=n,元素移动次数=0次;最坏情况是i=1,元素移动的次数n-1次。
;----------------------------------------------------
  1 title   erase element in array
  2 assume  cs:code,ds:data
  3 data    segment
  4 array   db      1,2,3,15,4,5,6,7,8,9
  5 len     db      $-offset array          ;array's length
  6 data    ends
  7 code    segment
  8 start:
  9         mov ax,data
 10         mov ds,ax
 11
 12         mov byte ptr ds:[3],0           ;Erase No.4 element
 13
 14         mov cx,(lengthof array-3)-1     ;Loop times
 15         mov di,3                        ;dest start position
 16
 17 s:      mov al,[di+1]                   ;regist element
 18         mov byte ptr [di+1],0           ;fill zero
 19         mov ds:[di],al                  ;put element in dest-pos
 20         inc di                          ;increment
 21         loop s
 22
 23         mov ax,di                       ;put number of element
 24         mov byte ptr ds:len,al          ;into addr-unit len
 25
 26         mov ah,4ch
 27         int 21h
 28 code    ends
 29 end     start
;----------------------------------------------------

测试:


d:\MASM>debug era.exe
-t

AX=18CE  BX=0000  CX=0035  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=18BE  ES=18BE  SS=18CE  CS=18CF  IP=0003   NV UP EI PL NZ NA PO NC
18CF:0003 8ED8          MOV     DS,AX
-t

AX=18CE  BX=0000  CX=0035  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=18CE  ES=18BE  SS=18CE  CS=18CF  IP=0005   NV UP EI PL NZ NA PO NC
18CF:0005 C606030000    MOV     BYTE PTR [0003],00                 DS:0003=0F
-d ds:0 f;第四个元素0FH被删除前,第11数据为数组长度A
18CE:0000  01 02 03 0F 04 05 06 07-08 09 0A 00 00 00 00 00   ................
-g 21

AX=0009  BX=0000  CX=0000  DX=0000  SP=0000  BP=0000  SI=0000  DI=0009
DS=18CE  ES=18BE  SS=18CE  CS=18CF  IP=0021   NV UP EI PL NZ NA PE NC
18CF:0021 B44C          MOV     AH,4C
-d ds:0 f;删除第四个0FH以后的样子,第11数组为数组长度9
18CE:0000  01 02 03 04 05 06 07 08-09 00 09 00 00 00 00 00   ................
-q

d:\MASM>
评论次数(0)  |  浏览次数(515)  |  类型(程序与练习) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码