查找单链表中倒数第k个元素
2009-09-09 11:10
441 查看
题目表述:
设计一个算法,找出一个无环的单链表里面倒数第k个元素,速度要快。
算法实现:
实现中的注释已经解释了算法的大概思想。
设计一个算法,找出一个无环的单链表里面倒数第k个元素,速度要快。
算法实现:
实现中的注释已经解释了算法的大概思想。
struct node{ int key; node* next; }; typedef node* List; int findLastKthElement(List list, int k) { //遍历整个链表, //声明一个临时指针指向头节点 //当遍历过元素个数小于K的时候,继续遍历 //当遍历过的元素个数等于k的时候,临时指针指向下一个元素,然后继续遍历 //当遍历到链表尾部的时候,则临时指针指向的节点就为倒数第k个元素。 if (list == NULL || k <= 0) { return -1; //查找失败。 } List p = list; List tempList = list; int num = 0; while(p) { if (num < k) { num++; } else if (num == k) { tempList = tempList->next; } p = p->next; } if (num < k) { return -1; //查找倒数第k个元素失败 } return tempList->key; }
相关文章推荐
- 查找一个单向链表中倒数第K个元素
- 单链表的创建(头插尾插),表长,输出,插入,删除,查找,逆置,分解长两个链表(奇数偶数链表),查找倒数第k个元素,产出相同元素
- 在链表中查找倒数第k个元素
- 查找链表的倒数第k个元素
- 查找单链表中倒数第k个元素
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- 查找链表中倒数第k个节点元素
- 尾插法、头插法创建链表、链表反转、链表分段反转、查找链表倒数第k个元素,查找链表中间元素
- 算法分析-查找单链表中的倒数第k个元素和中间元素
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- 程序员面试题100题第9题——查找链表中倒数第K个结点
- 链表中倒数第K个元素,
- 剑指offer:查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找单向链表倒数第n个元素
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 数据结构链表 -- 查找倒数第N个元素、中间元素、创建链表
- 查找链表中倒数第k个节点,若查找成功,返回数据域的值
- 查找单链表的倒数第K个元素
- 程序员面试100题(算法)之查找链表中倒数第k个节点(含单向链表的创建和打印)