Extract middle element from a single linked list [closed]

主宰稳场 提交于 2019-12-05 08:08:21

问题


I have a question:

Find the middle element from a single linked list.

I need to know the way/method of this problem.


回答1:


You can use two pointers to iterate through the list - one which iterates twice as fast as the other. When the fast pointer reaches the end of the list then the slow pointer will be pointing at the mid-point.

Algorithm:

init slow_pointer = head
init fast_pointer = head
repeat
   fast_pointer = fast_pointer->next;
   if fast_pointer == NULL
      break;
   fast_pointer = fast_pointer->next;
   if fast_pointer == NULL
      break;
   slow_pointer = slow_pointer->next;
until false
// slow_pointer now points at the middle node


来源:https://stackoverflow.com/questions/35653250/extract-middle-element-from-a-single-linked-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!