【发布时间】:2018-05-02 14:01:47
【问题描述】:
我正在尝试仅使用两个指针创建一个链表(我查看的每个帖子似乎都使用 3,但我对分配的要求是 2)
所以我将从我的处理方式开始。目前这些值是这样链接的 nullptr -> (head)1->2-> ... -> 7->8->nullptr,其中被反转的值是 1,2,3,4,5,6, 7,8
void reverseList(){
ListNode *last = head;
ListNode *current = last->next;
if(current == nullptr) return;
while(current != nullptr){
current->next = last;
last = current;
current = last->next;
}
}
从逻辑上讲,我的循环在纸上是有效的,但在我的 ide 和调试器中它是一个无限循环。
我还尝试创建一个循环来检查大小并从最后开始,其中 head = 8 和 tail = 1 但这也不起作用。
我还尝试了一种二分搜索方法,在该方法中找到了中点并执行了 +- mid 并进行了交换,但我也无法从 4->3 开始。
我的目标是从 1->2->3->4->5->6->7->8 到 8->7->6->5->4->3 ->2->1
【问题讨论】:
-
用你的逻辑填写
while循环,看看它是否有效。 -
对不起!添加,我意识到一些可能有效但无限循环的东西,添加它
-
“逻辑上,在纸上我的循环可以工作” 你需要更好的逻辑或更好的纸。超越
current的唯一方法是采用原始current->next,但在查看之前将其覆盖。 -
如果你有一个函数接受
head并且允许两个其他指针变量,那么你总共有三个。
标签: c++ pointers linked-list