Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 动态单链表_C_Assembly_Mips - Fatal编程技术网

C 动态单链表

C 动态单链表,c,assembly,mips,C,Assembly,Mips,我正在尝试创建一个linkedlist,其中包含从用户输入在MIPS中动态分配的内存 我想知道是否有一个通常用于创建节点(C中的结构)的通用结构——例如,可能使其成为将在条件语句中调用的子进程 我要翻译的结构是: struct p { char name[256]; int phone; float rating; struct p *next; }; 结构的每个部分的输入都将由用户输入(这部分我知道如何做和存储),但我不确定如何在堆上分配寄存器值以动态完成这一

我正在尝试创建一个linkedlist,其中包含从用户输入在MIPS中动态分配的内存

我想知道是否有一个通常用于创建节点(C中的结构)的通用结构——例如,可能使其成为将在条件语句中调用的子进程

我要翻译的结构是:

struct p {
    char name[256];
    int phone;
    float rating;
    struct p *next;
};
结构的每个部分的输入都将由用户输入(这部分我知道如何做和存储),但我不确定如何在堆上分配寄存器值以动态完成这一任务

最后,我将根据评级对这些值进行排序


谢谢你的帮助,谢谢

如果寄存器
$t9
包含
结构p
实例的地址,则可以使用
$t9
的偏移量访问结构的字段

加载
name
do
lw$t0,0($t9)
的第一个字符

要加载
手机
do`lw$T0256($t9)

加载
rating
do
lwc1$f0260($t9)#256+sizeof(int)


要加载
next
do
lw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register
$t9
包含
结构p
的实例地址,可以使用
$t9
的偏移量访问结构的字段

加载
name
do
lw$t0,0($t9)
的第一个字符

要加载
手机
do`lw$T0256($t9)

加载
rating
do
lwc1$f0260($t9)#256+sizeof(int)


要加载
next
do
lw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register
$t9
包含
结构p
的实例地址,可以使用
$t9
的偏移量访问结构的字段

加载
name
do
lw$t0,0($t9)
的第一个字符

要加载
手机
do`lw$T0256($t9)

加载
rating
do
lwc1$f0260($t9)#256+sizeof(int)


要加载
next
do
lw$t0264($t9)#256+sizeof(int)+sizeof(float)
如果register
$t9
包含
结构p
的实例地址,可以使用
$t9
的偏移量访问结构的字段

加载
name
do
lw$t0,0($t9)
的第一个字符

要加载
手机
do`lw$T0256($t9)

加载
rating
do
lwc1$f0260($t9)#256+sizeof(int)


要在链表中加载
next
do
lw$t0264($t9)#256+sizeof(int)+sizeof(float)
,每个节点由两个项目组成:

1.数据

2.下一个节点的地址

为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节

如果要创建fist结构,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用

现在你可以给结构赋值了

例如,如果要在电话字段中存储号码7,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)

在链表中,每个节点由两项组成:

1.数据

2.下一个节点的地址

为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节

如果要创建fist结构,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用

现在你可以给结构赋值了

例如,如果要在电话字段中存储号码7,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)

在链表中,每个节点由两项组成:

1.数据

2.下一个节点的地址

为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节

如果要创建fist结构,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用

现在你可以给结构赋值了

例如,如果要在电话字段中存储号码7,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)

在链表中,每个节点由两项组成:

1.数据

2.下一个节点的地址

为了分配足够的内存,必须找到所需的字节数。在这种情况下,数组字段需要256字节,int字段需要4字节,float字段需要8字节,下一个节点的地址需要4字节

如果要创建fist结构,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)
addi$v0$0,9
addi$a0,$0272
系统调用

现在你可以给结构赋值了

例如,如果要在电话字段中存储号码7,可以执行以下操作:

addi $t0,$0,7
sw $t0,256($v0)

站台是什么?动态内存分配是您通常要求操作系统执行的操作,而不是自己滚动。结构很简单-只需计算总大小并使用偏移量即可。我使用QtSpim执行,但无法计算总大小,因为用户可以输入随机数目的要计算的结构。我只是在练习堆/堆栈访问,对此我一窍不通。您需要使用syscall 9在Spim中分配堆内存。平台是什么?动态内存分配是您通常要求操作系统执行的操作,而不是自己滚动。结构很简单-只需计算总大小并使用偏移量即可。我使用QtSpim执行,并且可以