所以我需要使用MIPS汇编语言来修改程序。我的指示如下:
写一个"合并"将两个有序整数列表合并为一个新的有序列表的程序 例如,给定两个有序列表(9,6,4,1)和(7,3,2,0)作为输入参数," merge"应该产生一个新的清单(9,7,6,4,3,2,1,0),也是订购的。另一个例子可能是合并(6,0,-3)和(9,5,4,0,-2)以产生(9,6,5,4,0,0,-2,-3)。 / p>
"合并"程序假定整数的两个输入列表(按降序排列)存储在数据区中。它加载整数并将它们合并到一个有序列表中。生成的有序列表(例如(9,6,5,4,0,0,-2,-3))应存储回数据区。
您可以根据自己的选择安排数据区域(即列表),以及将结果列表覆盖到原始的两个列表上。但一定要提供有意义的标签,并清楚地指出(使用标签或注释)存储合并列表的位置。在程序终止之前,它应该打印出合并列表,该列表应按递减顺序排列。
注意:请不要实施任何排序算法!如果你这样做,你将获得零(0)等级。
*我认为这里的说明真的不清楚。我不确定是否应该提供列表或假设这些列表已经存在。任何示例或建议/程序都会有很大帮助!
答案 0 :(得分:0)
根据需要,可怕的Java中的一个例子:
import java.util.*;
class merge {
// Data Area
//static LinkedList list1 = new LinkedList(Arrays.asList(9,6,4,1));
//static LinkedList list2 = new LinkedList(Arrays.asList(7,3,2,0));
static LinkedList list1 = new LinkedList(Arrays.asList(6,0,-3));
static LinkedList list2 = new LinkedList(Arrays.asList(9,5,4,0,-2));
static LinkedList list3 = new LinkedList();
// Code Area
public static void main(String[] args)
{
ListIterator<Integer> list1Iterator = list1.listIterator();
ListIterator<Integer> list2Iterator = list2.listIterator();
Integer i1 = list1Iterator.next();
Integer i2 = list2Iterator.next();
while (true) // endless, breaks when one of the list reaches its end
{
if (i1 > i2)
{
list3.add(i1);
if (list1Iterator.hasNext())
{
i1 = list1Iterator.next();
}
else // no element left in list1, fill list3 with the rest of list2 and break
{
list3.add (i2);
while (list2Iterator.hasNext())
{
list3.add(list2Iterator.next());
}
break;
}
}
else
{
list3.add(i2);
if (list2Iterator.hasNext())
{
i2 = list2Iterator.next();
}
else // no element left in list2, fill list3 with the rest of list1 and break
{
list3.add (i1);
while (list1Iterator.hasNext())
{
list3.add(list1Iterator.next());
}
break;
}
}
}
System.out.println (list3);
}
} // class merge