Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- insert_begin:
- addi $sp, $sp, -12
- sw $a0, ($sp) #sacuvali a0 na steku jer nam treba za return
- #allocate for node 4 for data, 4 for pointer
- li $a0, 8 #alokacija
- li $v0, 9 #kod za sitemski poziv za alokaciju
- syscall
- sw $a1, ($v0)
- lw $a0, ($sp) # glava liste
- sw $a0, 4($v0) # next od novog cvora je glava liste
- move $a0, $v0
- addi $sp, $sp, 12
- jr $ra
- print_list:
- addi $sp, $sp, -12
- sw $a0, ($sp)
- move $t0, $a0 # struct node* curr = glava
- loop_print:
- beq $t0, $0, end_print
- lw $a0, ($t0) #t0 pokazivač koji ide po listi
- li $v0, 1
- syscall
- la $a0, space
- li $v0, 4
- syscall
- lw $t0, 4($t0) #curr = cur->next;
- j loop_print
- end_print:
- lw $a0, ($sp)
- addi $sp, $sp, 12
- jr $ra
- insert_end:
- addi $sp, $sp, -12
- sw $a0, ($sp)
- li $a0, 8
- li $v0, 9
- syscall
- sw $a1, ($v0)
- sw $0, 4($v0) #jer je next null kada dodajemo na kraj logic dude..
- lw $a0, ($sp)
- beq $a0, $0, empty_list
- move $t0, $a0 #curr = glava
- move $t1, $0 #prev = NULL;
- loop_insert:
- beq $t0, $0, end_insert
- move $t1, $t0 #prev = curr
- lw $t0, 4($t0) #curr = curr->next;
- j loop_insert
- end_insert:
- sw $v0, 4($t1)
- j final_insert
- empty_list:
- move $a0, $v0
- final_insert:
- addi $sp, $sp, 12
- jr $ra
- main:
- move $a0, $0 #struct node* glava = NULL;
- li $a1, 5
- jal insert_begin
- li $a1, 3
- jal insert_begin
- li $a1, 7
- jal insert_end
- jal print_list
- li $v0, 10
- syscall
- .data
- space: .asciiz " "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement