IT公司100题-13-求链表中倒数第k个结点
问题描述:
struct list_node {
int data;
list_node* next;
};
分析:
// 13_1.cc
#include <iostream>
using namespace std; struct list_node {
int data;
list_node* next;
}; list_node* find_kth(list_node* head, size_t k) {
if (!head)
return NULL; // 统计链表中节点的个数
size_t count = ;
list_node* cur = head;
while(cur->next != NULL) {
cur = cur->next;
count++;
} if(count < k)
return NULL; cur = head;
for(size_t i = ; i <= count - k; i++)
cur = cur->next; return cur;
} // 插入元素
void insert_node(list_node*& head, int data) {
list_node* p = new list_node;
p->data = data;
p->next = head;
head = p;
} int main() {
// 创建链表
list_node* head = NULL;
for (int i = ; i > ; i--)
insert_node(head, i); // 查找倒数第k个
list_node* p = find_kth(head, );
cout << p->data << endl;
return ;
}
方法2:
// 13_2.cc
#include <iostream>
using namespace std; struct list_node {
int data;
list_node* next;
}; list_node* find_kth(list_node* head, size_t k) {
if (!head)
return NULL; list_node* p1 = head;
for (size_t i = ; i <= k; i++) {
if (!p1) // 链表长度不足k
return NULL;
else
p1 = p1->next;
} list_node* p2 = head;
while (p1) {
p1 = p1->next;
p2 = p2->next;
}
return p2;
} // 插入元素
void insert_node(list_node*& head, int data) {
list_node* p = new list_node;
p->data = data;
p->next = head;
head = p;
} int main() {
// 创建链表
list_node* head = NULL;
for (int i = ; i > ; i--)
insert_node(head, i); // 查找倒数第k个
list_node* p = find_kth(head, );
cout << p->data << endl;
return ;
}
转载自源代码
IT公司100题-13-求链表中倒数第k个结点的更多相关文章
- 剑指offer【13】- 链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { ...
- 链表中倒数第k个结点 【微软面试100题 第十三题】
题目要求: 输入一个链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针. 参考资料:剑指offer第15题 题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走 ...
- 第22题:链表中倒数第k个结点
题目描述 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点,从头结点开始它们的值依次是1.2.3.4.5 ...
- php实现求链表中倒数第k个节点
php实现求链表中倒数第k个节点 一.总结 $head = $head->next; //1.将$head节点next域里面的记录的那个地址值($head节点的下一个节点的地址)给$head,$ ...
- 《剑指offer》第二十二题(链表中倒数第k个结点)
// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点, ...
- 输出单项链表中倒数第k个结点——牛客刷题
题目描述: 输入一个单向链表,输出该链表中倒数第k个结点 输入.输出描述: 输入说明:1.链表结点个数 2.链表结点的值3.输入k的值 输出说明:第k个结点指针 题目分析: 假设链表长度为n,倒数第k ...
- 剑指Offer编程题(Java实现)——链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 注意: 该题目不可以用先反转链表再输出第k个结点的方式,因为反转链表会改变该结点的next指向 思路一 使用栈Stack倒序存储,顺序pop第k个 ...
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
题目描述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为两个整数n和k(0< ...
- 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点
第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...
随机推荐
- Linux内核态用户态相关知识
http://www.cnblogs.com/bakari/p/5520860.html http://www.cnblogs.com/Anker/p/3269106.html
- Android性能优化典范(二)
Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的 ...
- poj2975(nim游戏取法)
求处于必胜状态有多少种走法. if( (g[i]^ans) <= g[i]) num++; //这步判断很巧妙 // // main.cpp // poj2975 // // Created b ...
- 自我总结(五)---(学习j2ee)
自我完善的过程就是在不断的自我总结不断的改进. 我们这半个月来都是学习j2ee.这个知识是很重要的,一般我们出去工作都是会用到的.我们的星期六,星期天也是不上课的.所以说我相当于上了十天的j2ee了. ...
- Unity3D WebCamTexture 调用外部摄像头
http://www.itnose.net/detail/6259004.html 一:Unity 中使用WebCamTexture 调用摄像头实现拍照和摄像. using UnityEngine; ...
- Linux下安装最新的Eclipse
欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...
- NOIP 2014 普及组 T3 螺旋矩阵
[题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...
- JavaScript window
window -- window对象是BOM中所有对象的核心 window,中文"窗口" window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数 全局的windo ...
- arithmetic
字典序算法 http://www.cnblogs.com/darklights/p/5285598.html 字典排序(lexicographical order)是一种对于随机变量形成序列的排序方法 ...
- 用ildasm/ilasm修改IL代码
原文地址:http://www.cnblogs.com/dudu/archive/2011/05/17/ildasm_ilasm_il.html 在开发中遇到这样一个场景,需要修改一个dll文件(.N ...