zoukankan      html  css  js  c++  java
  • 单链表的逆置普通循环方法(详细图解)

    关于单链表的逆置,大家都很清楚有两种基本方法:(1)普通的循环的方法。(2)递归调用方法。今天正好研究这两种方法,发现很不理解代码这么写的具体的作用,诚如很多人所说,吃透这个还是要自己画一个详细的过程图。今天就给大家介绍一下(普通的循环方法)我学习下来的一些经验,如有不对之处还望大家一起交流。

    首先,以下是关于单链表逆置的普通循环方法的代码:

    //单链表定义
    typedef struct ListNode{
    		int m_nValue;
    		ListNode* pNext;
    };
    
    //单链表逆置实现
    ListNode* ReverseList(ListNode* pHead)
    {
    	if (pHead == NULL || pHead->pNext == NULL)
    	{
    		retrun pHead;
    	}
    
    	ListNode* pRev = NULL;
    	ListNode* pCur = pHead;
    	while(pCur != NULL)
    	{
    		ListNode* pTemp = pCur;   // 步骤①
    		pCur = pCur->pNext;       // 步骤②
    		pTemp->pNext = pRev;      // 步骤③
    		pRev = pTemp;
    	}
    	return pRev;
    }
    

      

    下面我们来用图解的方法具体介绍整个代码的实现流程:

    初始状态:

    第一次循环:

    第一次循环过后,步骤①:pTemp指向Head,步骤②:pCur指向P1,步骤③:pTemp->pNext指向NULL。

    此时得到的pRev为:

    第二次循环:

    第二次循环过后,步骤①:pTemp指向P1,步骤②:pCur指向P2,步骤③:pTemp->pNext指向Head。

    此时得到的pRev为:

    第三次循环:

    第三次循环过后:步骤①:pTemp指向P2,步骤②:pCur指向P3,步骤③:pTemp->pNext指向P1。

    此时得到的pRev为:

    第四次循环:

    第四次循环过后:步骤①:pTemp指向P3,步骤②:pCur指向NULL,步骤③:pTemp->pNext指向P2。

    此时得到的pRev为:

    至此,单链表的逆置完成。

  • 相关阅读:
    jquery,日常 记录知识 点 (选择器的引用类型)
    jQuery之map()和get() map().get().join意思
    转 谈谈JS里的{ }大括号和[ ]中括号的用法,理解后就可以看懂JSON结构了。
    CSS属性
    CSS3属性
    写网页的随意 记录要点
    css,查询相应标签,div等
    CSS ,浮动,clear记录,和一些转载别处
    linux下如何关闭防火墙?如何查看防火墙当前的状态
    Objective-C和Swift混合编程开发
  • 原文地址:https://www.cnblogs.com/dhls231/p/4773555.html
Copyright © 2011-2022 走看看