我有一个通过“删除”任何包含小于某个数字的值的节点来清理链接列表的任务(比方说10) . 它比预期的要困难一些,因为节点在内存中不是有序的 . 见下文
list:
.word 15
.word n1
n2:
.word 12
.word n3
n6:
.word 27
.word n7
n3:
.word 22
.word n4
n1:
.word 1
.word n2
n5:
.word 34
.word n6
n7:
.word 6
.word -1 # logical end of the list
n4:
.word 9
.word n5
如果头指向地址“268500992”,其中包含15,和下一个位置四位离开包含指针到下一个节点(称为N1),我怎么可以从N1的 Value ?
我尝试了以下内容,但它正在将地址(第一个节点的指针或n1的地址)加载到$ t0而不是该地址的值 .
la $a0,list
addi $a0, $a0, 4
lw $t0,0($a0)
1 回答
不要忘记
la $a0,list
将加载指向列表的指针 . 随后的lw $t0,0($a0)
将加载头节点的值,并且lw $t0,4($a0)
(或您执行的操作)将指针加载到下一个节点 . 你仍然是头节点,但现在$t0
指向节点1.最好的办法是使用lw $a0,4($a0)
转到下一个节点 . 要检索其值,您仍需要执行lw $t0,0($a0)
.