zoukankan      html  css  js  c++  java
  • [链表常用技巧]链表逆序+链表中点

    链表逆序

    给定一个链表,一般的逆序的方法要设置三个指针,这种操作很繁琐,下面总结一种简单的方法:

    为链表设置一个头结点,然后head后面的节点依次的插入到head结点之前。最后完成链表的逆序。

    代码实现:

    ListNode* reverseList(ListNode* head) 
        {
            if(head == NULL)
                return NULL;
                
            ListNode dummy(-1);
            dummy.next = head;
            ListNode *pre = dummy.next;
            
            while(pre->next != NULL)
            {
                ListNode *tmp = pre->next;
                pre->next = tmp->next;
                tmp->next = dummy.next;
                dummy.next = tmp;
            }//while
            
            return dummy.next;
        }
    

    再来看一个链表的中点

    查找链表的中点,使用的方法就是快慢指针。但是要注意结点总数为奇数个或者结点总数为偶数个的时候,中点结点指针停止的位置不同。

    代码实现:

    ListNode *fast = head;
    ListNode *low = head;
    
    //利用快慢指针找到链表的中点
    while(fast != NULL && fast->next != NULL)
    {
    	fast = fast->next->next;
    	low = low->next;
    }
    //注意链表结点的个数奇数还是偶数
    //偶数结点个数,low指向后半部分的第一个
    //奇数结点个数,low指向越过对称中心结点,指向后半部分的第一个结点
    if(fast != NULL)
    {
    	low = low->next;
    }
    

      

  • 相关阅读:
    CentOS6.4 安装nmon
    CentOS6.4 访问域局网中Windows的共享
    将类似 12.56MB 36.89KB 转成 以K为单位的数字【备忘】
    ICE中间件相关
    HDFS介绍
    漫画描述HDFS工作原理
    离线安装Cloudera Manager 5和CDH5
    storm集群相关资料
    kafka相关资料
    jstatd
  • 原文地址:https://www.cnblogs.com/stemon/p/4817031.html
Copyright © 2011-2022 走看看