原理:两个指针先都指向头指针的下一节点,一个指针先走K-1步,然后俩指针再一起走,后走的指针所指为所求,注意边界处理。
class Node{
Node link;
int data;
public Node(){}
public Node(int m) {
data = m;
}
}
public class MyLinkList {
public Node createLinkList(int[] a){
Node head_node = new Node();
Node temp_node = head_node;
for(int m : a){
Node n = new Node(m);
temp_node.link = n;
temp_node = n;
}
return head_node;
}
public int printK_NodeOfCountFromEnd(Node head_node,int k){
if(null == head_node || k <= 0)
return 0;
Node temp1_node = head_node.link;
for(int i = 0; i < k-1 && null != temp1_node; i++)
temp1_node = temp1_node.link;
if(null == temp1_node)
return 0;
Node temp2_node = head_node.link;
while(null != temp1_node.link){
temp1_node = temp1_node.link;
temp2_node = temp2_node.link;
}
System.out.println(temp2_node.data);
return 1;
}
public static void main(String[] args){
MyLinkList list = new MyLinkList();
int[] a = {1,4,2,5,3};
list.printK_NodeOfCountFromEnd(list.createLinkList(a), 2);
}
}
运行:
C:\test>java MyLinkList
5
文章转自:[url]http://blog.csdn.net/nash_/article/details/8205491
[/url]
源码:
- 大小: 43.9 KB
分享到:
相关推荐
以2009年的真题为例,题目要求在不改变链表的前提下查找链表中倒数第k个位置上的结点,并输出该结点的data域的值。 - **算法设计思路**:使用两个指针p和q,初始时均指向头结点的下一个结点。先让p指针沿链表移动至...
- 提供了一种算法,用于查找链表中的倒数第k个结点。具体步骤包括初始化两个指针p和q,通过控制p的移动速度来实现q指向倒数第k个结点的目标。 **知识点解析:** 1. **双指针技巧:** - 使用双指针技术是一种常见且...
查找单链表中倒数第k个结点** - **题目解析**: 本题考查单链表的基本操作及算法设计能力。 - **答案解析**: 可以使用双指针技术来解决这个问题。首先让一个指针先走k步,然后再让另一个指针从头开始移动,当先走...
在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。要求: (1)描述算法的基本设计思想 (2)描述...
10. **链表操作**:寻找链表中倒数第k个节点的问题,可以使用快慢指针法,快指针先移动k步,然后两个指针同步移动,当快指针到达末尾时,慢指针指向的就是倒数第k个节点。 11. **栈的序列**:根据进栈和退栈规则,...
- **解析**:题目要求设计算法查找链表中倒数第K个结点,涉及链表的基本操作和算法设计。 3. **内存访问时间计算** - **知识点**:内存访问时间是衡量计算机性能的重要指标。 - **解析**:题目提供了虚拟地址和...
1. 查找单链表中倒数第k个结点的问题,使用双指针技术在不改变链表前驱的情况下完成了查找任务。这是数据结构中链表操作的常见问题。 2. 循环左移一维数组中的元素,这里通过分段逆置数组的方式来解决,是一个高效...
- **题目描述**:给出一个带有表头结点的单链表,要求查找链表中倒数第k个位置上的结点。 - **解析**: 1. **基本设计思想**:使用双指针技术,一个快指针首先向前移动k步,然后两个指针同时移动,当快指针到达链表...
- **题目背景**:已知一个带有表头结点的单链表,要求设计算法查找链表中倒数第k个位置上的结点。 - **算法思路**:定义两个指针变量p和q,初始时均指向头结点的下一个结点。首先让p指针移动到第k个结点,然后q指针...
12. 设计一个尽可能高效的算法,查找链表中倒数第 k 个地点上的结点,算法的基本设计思想是使用双指针技术,一个指针从头指针 list 开始移动,另一个指针从头指针 list 开始移动到第 k 个地点,然后两个指针同时移动...
在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第 k 个位置上的结点〔k 为正整数〕。 分析:此题考查的是线性表的链式存储,主要是线性表的基本操作的应用。做此题时要把握算法的效率。 3. 〔...
2. **题目解析**:题目要求设计一个算法来查找单链表中倒数第k个位置上的结点。为了高效地解决这个问题,可以使用双指针技术,即设置两个指针,一个快指针和一个慢指针,让快指针先走k步,然后同时移动两个指针,当...
5. **链表倒数第k个位置值查找** - 题目:设计一个算法,找出一个链表的倒数第k个位置的值,有则返回1并输出,否则返回0。 - **解析**:可以使用双指针技巧,其中一个指针先走k步,之后两个指针同时移动,当先走的...