企业网站建设注意,无锡做网站专业的公司,做企业网站10万起步,wordpress制作热门文章江湖一笑浪滔滔#xff0c;红尘尽忘了 题目 示例 思路 链表这部分的题#xff0c;不少都离不开单链表的反转#xff0c;参考#xff1a;反转一个单链表 这道题加上哨兵位的话会简单很多#xff0c;如果不加的话#xff0c;还需要分情况一下#xff0c;像是从头节点开始… 江湖一笑浪滔滔红尘尽忘了 题目 示例 思路 链表这部分的题不少都离不开单链表的反转参考反转一个单链表 这道题加上哨兵位的话会简单很多如果不加的话还需要分情况一下像是从头节点开始反转还是头节点以后开始反转有了哨兵位后就只有一种情况了。 malloc一个哨兵位next指向head遍历两次一次找起点开始节点的前一个节点保存下来为了连接reverse返回的节点地址一次找结束结束的节点next节点保存下来并使该节点的next指针置空剩下的就是连接的问题比较简单。 代码
struct ListNode* reverse(struct ListNode* head)
{struct ListNode* n1 NULL;struct ListNode* n2 head;struct ListNode* n3 NULL;if(n2)n3 n2-next;while (n2){n2-next n1;n1 n2;n2 n3;if (n3)n3 n3-next;}return n1;
}struct ListNode* reverseBetween(struct ListNode* head, int left, int right)
{if(head NULL || left right){return head;}struct ListNode* phead malloc(sizeof(struct ListNode));phead-next head;struct ListNode* prev NULL;struct ListNode* cur1 phead;struct ListNode* cur2 phead;struct ListNode* Back NULL;struct ListNode* next NULL;int num1 left;int num2 right;while(num1--){prev cur1;cur1 cur1-next;}while(num2--){cur2 cur2-next;}next cur2-next;cur2-next NULL;Back reverse(cur1);prev-next Back;int num right - left;while(num--){Back Back-next;}if(Back)Back-next next;head phead-next;free(phead);return head;
} 个人主页Lei宝啊
愿所有美好如期而遇