查找单链表的倒数第k个节点,要求只能遍历一次链表
来源:互联网 发布:2015年网络零售总额 编辑:程序博客网 时间:2024/06/08 07:09
源文件:
#include "LinkList.h"#include <assert.h>#include <stdio.h>// 在单链表的尾部插入一个节点void PushBack(PNode* pHead, DataType data){PNode pCurNode = NULL;PNode pNewNode = NULL;assert(pHead); pNewNode = BuyNode(data);if(pNewNode == NULL)return;if(*pHead == NULL){*pHead = pNewNode;}else{pCurNode = *pHead;while(pCurNode->_pNext){pCurNode = pCurNode->_pNext;}pCurNode->_pNext = pNewNode;}}// 构建一个新节点Node* BuyNode(DataType data){PNode pNewNode = (Node*)malloc(sizeof(Node));if(pNewNode == NULL)return NULL;pNewNode->_data = data;pNewNode->_pNext = NULL;return pNewNode;}// 正向打印单链表void PrintList(PNode pHead){if(pHead == NULL)return;while(pHead){printf("%d->",pHead->_data);pHead = pHead->_pNext;}printf("NULL\n");}// 查找单链表的倒数第K个结点,要求只遍历一次链表PNode FindLastKNode(PNode pHead, size_t k){PNode pFastNode = NULL;PNode pSlowNode = NULL;if(pHead == NULL)return NULL;pSlowNode = pHead;pFastNode = pHead;while(--k){pFastNode = pFastNode->_pNext;if(pFastNode == NULL)return NULL;}while(pFastNode->_pNext){pSlowNode = pSlowNode->_pNext;pFastNode = pFastNode->_pNext;}return pSlowNode;}//销毁单链表,释放空间 void DestroyList(Node* pHead) { while(pHead) { Node* temp = pHead; pHead = pHead->_pNext; free(temp); } }
测试文件:
#include "LinkList.h"void test(){PNode node = NULL;PushBack(&node,1);PushBack(&node,3);PushBack(&node,5);PushBack(&node,4);PushBack(&node,2);PushBack(&node,6);PrintList(node);node = FindLastKNode(node,3);printf("从倒数第k个结点开始的链表:\n");PrintList(node);DestroyList(node);}int main(){test();return 0;}
阅读全文
0 0
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 链表--查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
- 剑指offer 15---查找单链表的倒数第k个节点,要求只能遍历一次链表
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- 【链表】查找链表倒数第k个结点,要求只能遍历一次
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- 查找单链表的中间节点,要求只能遍历一次链表
- 有关单链表的两个问题【遍历一次求中间节点,倒数第K个结点】
- 【剑指offer】面试题15 使用一次遍历查找到倒数第K个节点-java
- python简单爬虫开发(urllib2、requests + BeautifulSoup)
- Makefile小细节
- STL的list成员函数
- css3之filter函数
- 39/40. Combination Sum (两题)
- 查找单链表的倒数第k个节点,要求只能遍历一次链表
- Java 数据类型自动提升
- 【USACO】山峰暸望
- [Microsoft] Find Peak Element
- addr2line命令
- 京东笔试题之进制均值
- jupyter 多个python版本
- 通过定时器制作的进度条
- HDU-搬寝室