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;//返回逆转后链表头
    }

  • 相关阅读:
    uva 1637 Double Patience
    Emacs ^ Vim
    uva 11181 Probability|Given
    uva 10491 Cows and Cars
    uva 1636 Headshot
    hdu 4336 Card Collector
    zoj 3640 Help Me Escape
    Codeforces 148 D Bag of mice
    hdu 4405 Aeroplane chess
    hdu 3853 LOOPS
  • 原文地址:https://www.cnblogs.com/HL-space/p/10546598.html
Copyright © 2011-2022 走看看