当前位置:   article > 正文

重排链表_单向链表节点,l0 ln

单向链表节点,l0 ln

给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

给定链表 1->2->3->4, 重新排列为 1->4->2->3.
示例 2:

给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.

解法一:用栈和队列解决
将链表前一半结点放在队列中,后一半结点放在栈中,然后出队列和出栈交替进行。

struct ListNode 
{
   
	int val;
	struct ListNode* next;
};

void reorderList(struct ListNode* head)
{
   
	if (head == NULL || head->next == NULL) return ;
	ListNode* p = head;
	int count = 0;
	while (p != NULL)
	{
   
		count++;
		p = p->next;
	}
	int len = count 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/226732
推荐阅读
相关标签
  

闽ICP备14008679号