第9章程序设计的一些编程技巧 数据元素a1和a1之间的逻辑关系发生了变化。由10字节 数据组成的数据表若釆用顺序存储结构,则逻辑上相邻的数据 元素在物理位置上也是相邻的,因此,除非ⅰ=n+1,否则必须移 动元素才能反映这个逻辑关系的变化 线性表的删除操作是指在第i(1≤n)个元素之前删除一个元 素,这时需将第至第n(共n-+1)个元素向后移动一个位置,即要 使长度为n的线性表 (a1,…a-1,a;,a1+1, 变成长度为n1的线性表 a1-1,a1
第9章 程序设计的一些编程技巧 数据元素ai-1和ai之间的逻辑关系发生了变化。由100个字节 数据组成的数据表若采用顺序存储结构,则逻辑上相邻的数据 元素在物理位置上也是相邻的,因此,除非i=n+1,否则必须移 动元素才能反映这个逻辑关系的变化。 线性表的删除操作是指在第i (1≤i≤n)个元素之前删除一个元 素,这时需将第i至第n(共n-i+1)个元素向后移动一个位置,即要 使长度为n的线性表 (a1,…ai-1,ai,ai+1,…,an ) 变成长度为n-1的线性表 (a1,…,ai-1,ai+1,...,an )
第9章程序设计的一些编程技巧 数据元素a-1、a1和a之间的逻辑关系发生了变化,为了在 存储结构上反映这个变化,同样需要移动元素。因此,本题设 计的基本思想是:当发现表中无此元素时,应将其插在表中的 适当位置上,即插在大于(或等于)前一个元素且小于(或等于)后 个元素的位置上,并将其后的元素依次后移。程序描述如下
第9章 程序设计的一些编程技巧 数据元素ai-1、ai和ai+l之间的逻辑关系发生了变化,为了在 存储结构上反映这个变化,同样需要移动元素。因此,本题设 计的基本思想是:当发现表中无此元素时,应将其插在表中的 适当位置上,即插在大于(或等于)前一个元素且小于(或等于)后 一个元素的位置上,并将其后的元素依次后移。程序描述如下:
第9章程序设计的一些编程技巧 DATA SEGMENT LTH DB100 ;数据表长 TAB DB SFH ;有序数据表 TEH DB X ;设给定的元素是X DATA ENDS STACK SEGMENT PARA STACKSTACK DB 100DUP(? STACK ENDS CODE SEGMENT assume CS: CODE, ds: DATA ASSUME ES: DATA STR PROC FAR
第9章 程序设计的一些编程技巧 DATA SEGMENT LTH DB 100 ;数据表长 TAB DB 5FH,… ;有序数据表 TEH DB 'X' ;设给定的元素是X DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS∶CODE,DS∶DATA ASSUME ES:DATA STR PROC FAR
第9章程序设计的一些编程技巧 SYART: PUSH DS MOV AX,0 PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX MOV BX, OFFSET TAB;BX指向数据表 MOV AL, TEM 取出给定的元素 MOV CX, TH ;取出表长的值
第9章 程序设计的一些编程技巧 SYART:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV BX,OFFSET TAB ;BX指向数据表 MOV AL,TEM ;取出给定的元素 MOV CX,LTH ;取出表长的值
第9章程序设计的一些编程技巧 LOP: CMP AL,[BX];在表中进行查找 JE SOP ;若找到,则转SOP JL INST 若给定元素小于表内元素,转INST插入 INC BX DEC CX JNZ LOP MOV[BX],AL;给定元素始终大于(或等于)表内元素 JMP JUST ;应将给定元素插在表的末尾 INST: MOV AH,[BX];取出表中元素暂存于AH MOV[BX],AL;插入给定的元素 INCBⅩ
第9章 程序设计的一些编程技巧 LOP:CMP AL,[BX] ;在表中进行查找 JE SOP ;若找到,则转SOP JL INST ;若给定元素小于表内元素,转INST插入 INC BX DEC CX JNZ LOP MOV [BX],AL ;给定元素始终大于(或等于)表内元素 JMP JUST ;应将给定元素插在表的末尾 INST:MOV AH,[BX] ;取出表中元素暂存于AH MOV [BX],AL ;插入给定的元素 INC BX