首页 > 代码库 > 链表学习二:链表反转与查找倒数第K个
链表学习二:链表反转与查找倒数第K个
1 //单链表反转 2 ListNode* RevertList(ListNode* m_pHead){ 3 ListNode* pCurrent = m_pHead; 4 ListNode* pPrev=NULL; 5 ListNode* pNext =NULL; 6 7 while (pCurrent != NULL) 8 { 9 pNext = pCurrent->m_pNext;10 pCurrent->m_pNext = pPrev;11 pPrev = pCurrent;12 pCurrent = pNext;13 }14 return pPrev;15 }
查找倒数第K个:设置两个指针p1,p2,首先p1和p2都指向链表的头部head,然后p2向前走k步,这样p1和p2之间就间隔k个节点,最后p1和p2同时向前移动,直至p2走到链表末尾,然后返回p1就是我们要找的链表的倒数K个节点。
//查找第倒数第K个ListNode *theKthofList(ListNode* m_pHead, int k){ ListNode* pBack; ListNode* pPre; pBack= m_pHead; pPre= m_pHead; for (; k>0; k--){ pPre= pPre->m_pNext; //移动pPre到与pBack距离k个位置 } while (pPre!= NULL){ pBack= pBack->m_pNext; //移动p1,pPre直到pPre到达最后 pPre= pPre->m_pNext; } return pBack;}
链表学习二:链表反转与查找倒数第K个
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。