zoukankan      html  css  js  c++  java
  • 链表反转

    /*******************************/

    题目:反转一个单链表。

    实例:输入: 1->2->3->4->5->NULL

    输出: 5->4->3->2->1-NULL。

    /*******************************/

    /*******************************/

    算法:首先判断该单链表是否为空。若该链表只有一个节点,那么只需要置其指针域为NULL即可。若单链表有多个节点,

    先将第一个节点指针域置NULL,然后再把第二个节点插入到第一个节点的前面,以此进行,将后面每一个节点都插入到第

    一个节点前,直至到最后一个节点。

    /*******************************/

    代码:

    /**
    * Definition for singly-linked list.
    * struct ListNode {
    * int val;
    * struct ListNode *next;
    * };
    */
    struct ListNode* reverseList(struct ListNode* head) {
    
    struct ListNode *ptr, *p;    /*定义两个指针*/
    if (head == NULL)    /*如果一个链表为空*/
    return head;
    ptr = head->next, head->next = NULL;    /*令ptr指针指向链表的第二个节点(链表若只有一个节点那么将会指向NULL)*/
    /*链表的第一个节点反转之后将会成为最后一个节点,令其指针域为NULL*/
    while (ptr != NULL)
    {
    p = ptr->next;    /*指针p是用来遍历整个链表的*/
    ptr->next = head;    /*让第一个节点链接在第二个节点的后面*/
    head = ptr;    /*头指针指向当前的第一个节点*/
    ptr = p;    /*相当于指针ptr在原链表(需要逆转的链表)中往后移动了一个节点*/
    }
    return head;
    
    }

    以上就是解题心得,如果有错误或有疑问欢迎大家指出,大家共同进步。

  • 相关阅读:
    完成端口CreateIoCompletionPort编写高性能的网络模型程序
    offsetof的使用
    __attribute__
    nn_slow和nn_fast
    完成端口(Completion Port)详解(转)
    等待
    win8.1磁盘使用率100解决方法
    ubuntu 14.04 修改PS1提示符
    ubuntu14.04 开启root登陆
    Linux下彻底卸载LibreOffice方法
  • 原文地址:https://www.cnblogs.com/yangyalong/p/9745191.html
Copyright © 2011-2022 走看看