-2
이중 연결 목록 중간에 노드를 삽입하고 싶습니다. 이것은 제 구현입니다.
내 기본 인수는 삽입 할 노드 앞에있는 노드입니다.이중 연결 목록 중간에 노드 삽입
public class DListNode{
public DListNode prev,next;
public Object item;
public DListNode(Object i,DListNode n,DListNode p){
prev=p;
next=n;
item=i;
}
public DListNode(Object i){
this(i,null,null);
}
}
public void insertAfter(Object e,DListNode firstNode) throws UnderFlow{
if(isEmpty()||(head==tail))
throw new UnderFlow("need at least two nodes");
else{
DListNode v=firstNode.next;
DListNode k=new DListNode(e,v,firstNode);
firstNode =k;
v.prev=k;
}
}
public static void main (String args[]) throws UnderFlow{
DList d=new DList();
d.insertFront("d");
d.insertFront("b");
d.insertAfter("c",d.head);
System.out.println(d.toString());
}
내가 실수를하고있는 곳을 볼 수는 없지만 b 만 인쇄합니다. d.
c가 중간에 삽입되지 않았습니다.
누군가 내가 잘못하고있는 부분을 지적 해 줄 수 있습니까?
'firstNode = k;'는'insertAfter()'내부에서 무엇을하고 있다고 생각하십니까? 당신은 결코 "이전 노드의 다음 항목"을 새 항목에 설정하지 않았습니다 ... – John3136
@ John3136 : 'firstNode.next = k'로 변경했는데 이제는 c가 인쇄됩니다. firstNode = k라고 할 때 firstNode라고 생각했습니다. get이 k를 가리키고 새로운 아이템에 "이전 노드의 다음 노드"를 설정하는 문제를 해결합니다. –
Google에서이를 수행 할 수있는 방법이 많아야합니다. – Marichyasana