如何使用MIPS实现带动态内存分配的字符串游程编码压缩程序
动态内存分配与字符串:游程编码压缩程序
编写一个对给定字符串应用游程编码压缩的程序,请遵循以下步骤:
- 从堆中动态分配内存,用于存储输入字符串和输出字符串两个字符串。
- 在分配的动态内存中读取一个长度小于40字符的输入字符串(仅包含a-z、A-Z)。
- 遍历字符串,找出连续重复的字符,将其替换为该字符加上重复次数。
- 示例:若输入字符串为
AAAAAA,输出字符串应为A6;若输入为BBCCCCCCCCCCCCC,输出应为B2C13。 - 注意:数字13在输出字符串中需表示为两个独立字符‘1’和‘3’。
- 单个出现的字符无需添加计数。
- 输出字符串在显示到控制台前,也需要存储在动态内存中。
- 实现可返回主函数的循环逻辑,使用以下提示信息:
- 输入提示:
Enter a string: - 结果提示:
Compressed string is: - 循环提示:
Do you want to apply run length encoding again?
- 输入提示:
- 使用以下测试数据验证程序:
- 输入:
AAAAaaabbcde→ 压缩后字符串:A4a3b2cde - 输入:
XXXXXXXXXXYYZZZWERTT→ 压缩后字符串:X10Y2Z3WERT2
- 输入:
现有MIPS代码片段
.data Prompt1: .asciiz "\n Enter a string." .text main: li $v0, 4 la $a0, Prompt1 syscall li $v0, 9 li $a0, 80 syscall move $s0, $v0 li $v0, 8 la $a0, 0($s0) li $a1, 40 syscall move $t0, $a0 li $t4, 0 Loop: lb $t1, 0($t0) sb $t1, 40($s0) addi $t0, $t0, 1 addi $t4, $t4, 1 addi $s0, $s0, 1 beq $t1, 0, End j Loop End: neg $t4, $t4 add $s0, $s0, $t4 li $v0, 4 la $a0, 40($s0) syscall
内容的提问来源于stack exchange,提问作者Polar Programer
相关产品推荐
相关产品推荐

