주제에 대한 몇 가지 질문이 있지만 여기서는 상황이 약간 다르다는 것을 알았습니다. 다른 질문은 Java linked-list 클래스를 다루지 만,이 클래스는 선생님으로부터 특정 속성이있는 사용자 정의 클래스입니다.연결된 목록의 특정 색인에서 개체를 삭제하는 방법은 무엇입니까?
그래서 'int'k '를 가져오고'k '색인에서 객체를 제거하고 제거 된 객체의'data '항목을 반환하는'removeAt '라는 메소드를 작성해야합니다.
내 문제는 개체를 찾은 후에 (기본적으로 다음 목록 노드에 대한 포인터를 제거합니다.) 일부 누락 된 특성이있는 것처럼 느껴지고 새로운 개체를 추가한다고 말하지 않았습니다. 당신이 이것을 달성하기 위해 제안 방법
public class ListNode {
Object data;
ListNode nextNode;
public ListNode(Object o){
this(o,null);
}
public ListNode(Object o,ListNode node){
data=o;
nextNode=node;
}
public Object getObject(){
return data;
}
public ListNode getNext(){
return nextNode;
}
}
:
public class List {
private ListNode firstNode;
private ListNode lastNode;
private String name;
public List()
{
this("list");
}
public List(String listName)
{
name=listName;
firstNode=lastNode=null;
}
//override
public String toString()
{
String stringToReturn = "";
ListNode currentNode = firstNode;
while (currentNode != null) {
stringToReturn += currentNode.toString();
currentNode = currentNode.getNext();
if (currentNode != null) {
stringToReturn += ", ";
}
}
return stringToReturn;
}
public Object removeAt(int k) throws ListIndexOutOfBound
{
ListNode removedNode = this.firstNode;
Object removedObject;
int idx = 0;
if (isEmpty())
throw new EmptyListException(this.name);
if (k < 0)
throw new ListIndexOutOfBound();
if (k == 0) {
removedObject = this.removeFromFront();
} else {
while (idx != k) {
removedNode = removedNode.getNext();
idx++;
if (removedNode == null)
throw new ListIndexOutOfBound();
}
if (removedNode == this.lastNode) {
removedNode = (ListNode) this.removeFromBack();
} else {
removedObject = removedNode.data;
//i'm stuck here...I want to remove this node from the list!
}
}
return removedNode;
}
이처럼 보이는 ListNode 클래스가 :
이 내 코드?
자바 그래서 그냥 당신의 좋은에 대한 모든 참조를 제거 GC 있습니다. 그러나 모든 항목이 리프가 아닌 것은 아닙니다. IOW, 당신은 1-2-3을 다루어야 만합니다. 어디에서 제거하고 싶은지 2. 그것에 대해 생각해보십시오. 또한 제네릭을 사용하지 않는 이유를 선생님에게 물어보십시오. – ChiefTwoPencils
어떻게 참조를 제거합니까? 이것은 내 질문 @ChiefTwoPencils – Joe