首页 > 代码库 > 剑指Offer14 逆序链表
剑指Offer14 逆序链表
1 /************************************************************************* 2 > File Name: 14_ReverseListNode.cpp 3 > Author: Juntaran 4 > Mail: JuntaranMail@gmail.com 5 > Created Time: 2016年08月30日 星期二 15时47分32秒 6 ************************************************************************/ 7 8 #include <stdio.h> 9 #include <malloc.h>10 11 // 链表结构体12 struct ListNode13 {14 int val;15 struct ListNode* next;16 };17 18 // 构造链表19 ListNode* createList()20 {21 struct ListNode* head;22 struct ListNode* p;23 struct ListNode* q;24 head = p = (ListNode*)malloc(sizeof(ListNode));25 head->val = 0;26 for (int i = 1; i <= 10; ++i)27 {28 q = (ListNode*)malloc(sizeof(ListNode));29 q->val = i;30 p->next = q;31 p = q;32 }33 p->next = NULL;34 return head;35 }36 37 // 顺序输出链表38 void PrintList(ListNode* head)39 {40 if (head == NULL)41 return;42 ListNode* temp = head;43 printf("PrintList:\n");44 while (temp != NULL)45 {46 printf("%d ", temp->val);47 temp = temp->next;48 }49 printf("\n");50 }51 52 // 逆序链表53 ListNode* ReverseList(ListNode* head)54 {55 if (head==NULL || head->next==NULL)56 return head;57 ListNode* fast = head->next;58 ListNode* slow = head;59 slow->next = NULL;60 ListNode* temp;61 62 while (fast->next != NULL)63 {64 temp = fast->next;65 fast->next = slow;66 slow = fast;67 fast = temp;68 }69 fast->next = slow;70 return fast;71 }72 73 int main()74 {75 ListNode* test = createList();76 PrintList(test);77 test = ReverseList(test);78 PrintList(test);79 return 0;80 }
剑指Offer14 逆序链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。