zoukankan      html  css  js  c++  java
  • C 单向链表就地逆转

    1、问题描述

    给定一个单链表L,设计函数Reverse将L就地逆转。即不需要申请新的节点,将第一个节点转换为最后一个结点,第二个节点转换为倒数第二个结点,以此类推。

    2、思路分析

    循环处理整个链表。将原链表的第一个结点取出,作为逆转后新链表的第一个结点(即新链表的链表头),同时原链表的第二个结点更新为原链表的链表头。之后不断取出原链表的链表头,插在新链表的链表头之前,即原链表的链表头不断“叛变到”新链表中充当新链表的链表头,从而达到就地逆转的目的。

    3、代码分享及结果展示

    PtrToNode Reverse(PtrToNode pOldHead)
    {
    	PtrToNode pNewHead = NULL;
    	PtrToNode pTemp = NULL;
    	while (pOldHead != NULL)
    	{
    		pTemp = pOldHead->nextPtr;//暂时存储原链表第二个结点地址
    		pOldHead->nextPtr = pNewHead;//将原链表第一个结点的nextPtr指向新链表的链表头
    		pNewHead = pOldHead;//更新新链表链表头
    		pOldHead = pTemp;//更新原链表链表头
    	}
    	return pNewHead;//返回逆转后链表头
    }

  • 相关阅读:
    MySQL学习--标量函数之日期函数
    MySQL学习-- case表达式
    音视频推流方法与工具使用
    音视频基础知识
    音视频测试点
    postman处理二进制流文件
    postman脚本之时间处理
    移动性能测试之adb内存相关
    Proxychains安装
    Valgrind的安装及简单使用
  • 原文地址:https://www.cnblogs.com/HL-space/p/10546598.html
Copyright © 2011-2022 走看看