【发布时间】:2015-08-22 00:49:08
【问题描述】:
我正在尝试使用以下方法反转部分链表。
public void reversePart(int start, int end){
if(start > end || end >size || start <0)
throw new IllegalArgumentException("Invalid indices provided!");
int count = end-start;
LinkedListNode<Integer> tmp = head;
LinkedListNode<Integer> reversalEnd = head;
//skip start nodes;
while(start>0){
tmp=tmp.next;
start--;
}
//point where we need to reconnect the list.
while(end>0){
end--;
reversalEnd=reversalEnd.next;//prepare reversal end node to connect to reversalEnd .
}
reversalEnd= reversalEnd.next;
LinkedListNode<Integer> startRev= tmp;
LinkedListNode<Integer> prev= null;
LinkedListNode<Integer> nxt= null;
//reverseSubList
while(count>0){
count--;
nxt= startRev.next;
startRev.next=prev;
prev = startRev;
if(count ==0)
break;
startRev=nxt;
}
tmp.next=startRev;// debugger crashes here.
nxt.next=reversalEnd;
}
当我运行它无限期运行的程序时,在尝试调试时,我注意到它按预期运行,直到反转完成并且调试器似乎在标记的行处崩溃。
任何关于我做错了什么的想法将不胜感激。
【问题讨论】:
标签: java algorithm linked-list