赞
踩
给定一个单链表 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
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。