zoukankan      html  css  js  c++  java
  • 剑指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 ListNode
    13 {
    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:
    ");
    44     while (temp != NULL)
    45     {
    46         printf("%d ", temp->val);
    47         temp = temp->next;
    48     }
    49     printf("
    ");
    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 }
  • 相关阅读:
    隐含马尔科夫模型的训练
    隐马尔科夫模型
    联合概率、边缘概率、条件概率
    移除集合元素
    常用的概率分布:伯努利分布、二项式分布、多项式分布、先验概率,后验概率
    探索性数据分析EDA综述
    奇异值分解(SVD)原理及应用
    分类算法的评价
    【底层原理】数据库的最简单实现
    深度学习模型超参数搜索实用指南
  • 原文地址:https://www.cnblogs.com/Juntaran/p/5823158.html
Copyright © 2011-2022 走看看