在矩阵中插入和删除元素

时间:2010-03-01 16:14:49

标签: matrix

我有一项任务,我有问题要求以下实施:

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来实现,我使用二维数组来表示矩阵。

3 个答案:

答案 0 :(得分:1)

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

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

|3    6|
|2    8|

或许多其他形式表明自己是替代品。我认为你必须决定你被要求实施什么,然后实施它。

答案 1 :(得分:0)

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

  • 插入一个空值为
  • 的新行
  • for i = newSizeOnX,直到我到达x(你的行),我减少,复制 行(m [i + 1] = [i])
  • 然后您只需将对象插入位置m [x] [y]并填充其余部分 m [x] [y'](所有y'!= y)

答案 2 :(得分:0)

在某一点上,这是一个规范问题。

在普通系统中,您可以:

  • 决定将这些案例视为禁止的例外,如果发生则返回错误或警告
  • 定义一个特定的预定行为,该行为与您实施的所有功能一致,并且有明确记录

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

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