【问题标题】:Write an algorithm printing the removed element from head of a linked list in an array?编写一个算法,打印从数组中链表头部删除的元素?
【发布时间】:2015-01-31 12:14:41
【问题描述】:

首先这是一个任务。我不要求任何代码只是澄清。

我不太明白这个问题,是否意味着将删除的元素放入数组中并在您调用删除头元素的方法时立即打印它意味着每次我打印1个元素并且数组容量总是1?或者您创建一个数组作为类成员,每次删除一个元素时,它都会放入数组中,然后有一个打印数组的方法?如果是这样,由于链表的大小不固定,您如何处理数组容量?

我自己的解决方案是创建一个静态数组列表,每次调用 deleteFirst() 方法时,节点内的数据都会放在数组列表中,然后我只有一个打印数组列表的方法,对我来说这似乎是合乎逻辑的解决方案,但我仅限于使用数组。

deleteFirst() 删除链表中的头节点。

【问题讨论】:

  • 如果你和你的教授澄清一下就好了。对我来说,这意味着只打印已删除的元素,但在“数组中”给出有点令人困惑。
  • 我问过她,她说你必须将链表头部的每个删除的元素放在一个数组中,我必须将所有代码放在一个方法中,然后从 main 调用它。 @almas shaikh

标签: arrays algorithm data-structures arraylist linked-list


【解决方案1】:

由于这是您的任务,您可以使用System.arraycopy 方法执行类似 arrayList 的操作:

 MyElementType[] elementArray = new MyElementType[10];
 .....
 element = deleteFirst();
 if (!doWeHaveEmptyLocationInArray()) {
       MyElementType[] tempElementArray = new MyElementType[elementArray.length() * 2];//double the size of array
       System.arraycopy(elementArray, 0, tempElementArray, 0, elementArray.lengh());//copy elements from old array to new one
       elementArray = tempElementArray;
 }
 ...add the removed element to new array

【讨论】:

  • 所以我必须创建一个像数组列表一样的数组?
  • 是的,因为它是你的任务,我建议数组表现得像 arrayList 是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 2021-09-10
  • 1970-01-01
  • 2014-10-25
  • 2019-01-19
相关资源
最近更新 更多