2010-03-01 57 views
2

我有一个任务,我有以下实现提问:插入和在矩阵中移除元素

insertAtRanks(Integer x, Integer y, Object o): insert a new element to be stored at position (x,y) 

Object removeAtRanks(Integer x, Integer y): remove and return the element at position (x,y) 

它已经要求replaceAtRanks的实施,我必须用参数替换一个位置内的元素。

所以我认为插入和删除元素时,矩阵会增加,尺寸减小,但我的问题是怎么样?

例如

| 3 6| 
| 2 5| 

如果我在位置(1,1)执行插入8号将在下面发生的呢?

| 3 6| 
| 2 8| 
| null 5| 

如果我不得不在(1,1)后删除元素,它会回到?

| 3 6| 
| 2 5| 

编辑:

我使用Java进行实施,我使用的类2维数组来表示矩阵。

+0

+1老老实实地声明这是一个作业问题,并准确地显示出您在任务中遇到什么问题 – Kena 2010-03-01 16:21:26

+1

这可能是一个实施决定,或者由您决定,或者应该向教师提问。如果他们没有指定,他们可能会希望你实施它,看你是否适合。 (顺便说一句,只要在相关行/列上存在空值时删除_only_就会将其删除)。 – 2010-03-01 16:21:26

回答

1
|3 6| 
|null 8| 
|2 5| 

|3 6| 
|0 8| 
|2 5| 

|3 6| 
|2 8| 

或许多其他形式提出自己作为替代品。我认为你必须决定你已被要求执行,然后实现它是什么。

0

您使用哪种语言,我不知道,但它应该是这样的:

  • 插入新行,空值
  • 对于i = newSizeOnX直到我到达X(你行) ,随着我减少,复制 行(m [i + 1] = [i])
  • 然后你只需插入对象的位置m [x] [y]并填写其余 m [x] [y '](全部Y'!= Y)
0

截至到某一点,这是规范的问题。

在一个正常的系统中,你既可以:

  • 决定治疗的情况下为禁止异常,如果发生
  • 定义一个特定的预定行为返回错误或警告,是一致的对于你实现的所有功能,并且清楚地记录下来

例如,用零或非数字预填充矩阵是处理第一个问题的一种典型方法。Matlab如何默认处理这个问题?

它也取决于应用程序。例如,如果您正在处理图像,则在大多数情况下,您不希望超过原始图像大小。如果您正在使用声音,默认情况下可能会在扩展数据序列时插入静音。什么对你的应用最有意义?