C++实现单链表删除倒数第k个节点的方法
2017-05-09 14:53
751 查看
本文实例讲述了C++实现单链表删除倒数第k个节点的方法。分享给大家供大家参考,具体如下:
题目:
删除单链表中倒数第k个节点
解题思路及算法代码:
标尺法,定义两个指针指向链表头结点,先让一个走k步,然后两个指针同时开始走,当先走的指针走到末尾时,后走的指针指向的结点就是需要删除的结点。
单链表结构定义:
typedef struct Node { int data; struct Node* next; }node, *pLinkedList;
删除倒数第K结点操作代码:
//head表示头结点 Node* removeLastKthNode(pLinkedList head, int k) { if (NULL == head->next || k < 1) return head; pLinkedList cur = head; //1号指针 pLinkedList ret = head; //2号指针,指向待删除节点 pLinkedList pre = NULL; //pdel待删除节点的前一个节点 /* head 1 2 3 4 5 cur ret */ while (k > 0 && cur != NULL) { k--; cur = cur->next; } //当链表走到终点时,k仍然大于0,可知k值大于链表长度 if (k > 0 && cur == NULL) { cout << "k值大于链表长度" << endl; return head; } //k == 0时,1号指针和2号指针同时走,ret即为待删除的节点 if (k == 0) { while (cur != NULL) { pre = ret; cur = cur->next; ret = ret->next; } /*k = 2时 head 1 2 3 4 5 NULL pre ret cur 即要求删除ret节点 */ pre->next = ret->next; free(ret); ret = NULL; return head; } }
希望本文所述对大家C++程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 左神的书——《程序员代码面试指南》之删除链表的倒数第k个节点 c++实现
- python实现单链表中删除倒数第K个节点的方法
- 17_7_14:逆置单链表+查找单链表的倒数第K个节点+非常规方法实现Add函数
- 删除单链表的倒数第K个节点
- 链表之删除单链表倒数第K个节点
- 链表问题---在单链表和双链表中删除倒数第K个节点
- 删除单链表倒数第K个节点
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 删除单链表中的倒数第n个节点的实现及测试程序
- 链表问题 在单链表和双链表中删除倒数第K个节点
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- (算法)输出单链表的倒数第k个节点,删除特点的节点和从链表尾一次输出节点值
- C++单链表找倒数第k个节点(时间复杂度为o(n)哦,用相距k节点的2个指针进行操作)
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 左程云_算法与数据结构 — 链表问题 — 02在单链表和双链表中删除倒数第K个节点
- 链表问题(1)-- 在单链表和双链表中删除倒数第K个节点
- 编写一个程序,实现删除链表中倒数第k个节点(用单链表实现)
- 链表问题——在单链表和双链表中删除倒数第K个节点