`
zeyuphoenix
  • 浏览: 57996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

收集面试题(九)(取得链表的指定数)

阅读更多
public class NodeTest {

	/** 得到Node,两个元素,一个为值,一个为指向下个值的指针。 */
	static private class Node {

		public int data;

		public Node nextNode;
	}

	/**得到链表的总数,正向计数得到总数-k*/
	private static int findNode(Node headNode, int k) {

		int count = 0;
		Node node = headNode;
		while (node.nextNode != null) {
			count++;
			node = node.nextNode;
		}

		if (k >= count) {
			return 0;
		}
		node = headNode;
		for (int i = 0, t = count - k; i <= t; i++) {

			if (i == t) {
				System.out.println(node.data);
				return 1;
			} else {
				node = node.nextNode;
			}
		}

		return 0;
	}

	/**取得两个指针,一个计数到k,另一个开始,第一个结束时,第2个取得。*/
	private static int findNodeOther(Node headNode, int k) {

		Node node1 = headNode;

		Node node2 = headNode;

		for (int i = 0; i < k && node1.nextNode != null; i++) {
			node1 = node1.nextNode;
		}

		if (node1.nextNode == null) {
			return 0;
		}
		while (node1.nextNode != null) {
			node1 = node1.nextNode;
			node2 = node2.nextNode;
		}
		System.out.println(node2.data);
		return 1;
	}

	/** 测试用 */
	public static void main(String[] args) {

		Node headNode = new Node();
		Node node = headNode;

		/** 生成node链表 */
		for (int i = 0; i < 120; i++) {
			node.nextNode = new Node();
			node.nextNode.data = i * 4;

			node = node.nextNode;
		}

		node.nextNode = null;

		System.out.println(findNode(headNode, 120));
		System.out.println(findNodeOther(headNode, 120));
	}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    链表面试题总结

    在讨论具体的面试题之前,我们首先需要了解链表的基本概念及其操作方法。链表是一种常用的数据结构,它通过节点之间的指针链接来存储数据元素。每个节点通常包含两部分:数据域(用于存储实际数据)和指针域(指向下...

    MangoDowner#clear-leetcode#面试题02.07.链表相交1

    面试题 02.07. 链表相交原题链接:面试题 02.07. 链表相交解法一:首尾相接法解题思路将这两个链表首尾相连,然后检测这个链表是否存在环,如果存在,则两

    算法大全-面试题-链表-栈-二叉树-数据结构

    "算法大全-面试题-链表-栈-二叉树-数据结构"这个压缩包文件提供了丰富的知识资源,旨在帮助学习者深入理解和应用这些核心概念。 链表是一种线性数据结构,与数组不同,它的元素在内存中不是连续存储的。链表由一...

    java基础面试题两个链表的第一个公共节点

    java基础面试题两个链表的第一个公共节点本资源系百度网盘分享链接

    关于链表的一些面试题

    关于链表的面试题主要考察应聘者对链表这种基本数据结构的理解和操作能力,下面详细讲解每个面试题所涉及的知识点。 题一检测单链表是否有环的知识点: 要检测链表是否有环,可以使用快慢指针的方法。具体操作为,...

    itcharge#LeetCode-Py#面试题 02.05. 链表求和1

    面试题 02.05. 链表求和标签:递归、链表、数学难度:中等题目大意给定两个非空的链表 l1 和 l2,表示两个非负整数,每位数字都是按照逆序的方式存储的,每

    链表面试题_链表_面试题_cow3cm_数据结构_

    链表是一种基础且重要的数据结构,在计算机科学特别是数据结构...同时,熟悉常见的链表面试题,有助于提升解决实际问题的能力。通过深入学习和实践,我们可以掌握如何有效地利用链表这一数据结构来优化算法和程序设计。

    C语言链表类面试题.docx

    【C语言链表类面试题】涉及的知识点主要包括链表数据结构、链表操作和算法设计。链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。 1. **链表逆置** 链表逆置是链表操作中的...

    java基础面试题反转链表

    java基础面试题反转链表本资源系百度网盘分享地址

    面试题总结:数组和链表的区别 数组和链表.pdf

    数组和链表的区别 在计算机科学中,数组和链表是两种基本的数据结构,它们都广泛应用于软件开发和算法设计中。然而,数组和链表有着根本的区别,这些区别决定了它们在不同的场景下的应用。 数组 数组是一种连续...

    C语言链表相关面试题.zip

    C语言链表相关的面试题在软件开发领域的面试中是非常常见的,这是因为链表作为一种基本的数据结构,对于理解数据结构、算法以及内存管理等方面有着重要的作用。以下是一些关于C语言链表的面试题及其详细解释。 1. ...

    java基础面试题复杂链表的复制

    java基础面试题复杂链表的复制本资源系百度网盘分享地址

    微软面试题(搜索树转双向链表)

    微软面试题,输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。适合新手入门结构清晰易懂

    有关链表的面试题

    链表反转是常见的面试题,可以通过迭代或递归实现。迭代法通常涉及三个指针:前驱、当前和后续,每次将当前节点的指针指向前驱,然后更新前驱和当前指针。递归法则通过递归调用函数,将当前节点的后续节点设为其...

    《剑指Offer》面试题Python实现.zip

    《剑指Offer》面试题Python实现《剑指Offer》面试题Python实现第2章面试...链表结束点面试题14调整队列顺序使寄数位于偶数前面3.4代码的可靠性面试题15链表中倒数第k个结点面试题16转发链表面试题17合并两个排序的链表...

    链表面试题目总结 全

    在计算机科学领域,链表是一种基本且非常重要的数据结构,它是面试中的常见考察点。链表通常由节点组成,每个节点包含数据部分和指向下一个节点的指针,最后一个节点指向null。链表分为单链表、双链表、循环链表等...

    js代码-面试题9:链表

    本压缩包文件“js代码-面试题9:链表”提供了关于链表的实践题目,可能是用于面试准备或自我提升的练习。 在JavaScript中,我们可以用对象来表示链表节点,通常包含两个属性:`value`存储数据,`next`指向下一个...

    面试高频算法题总结-剑指Offer题解

    面试题6:从尾到头打印链表 面试题7:重建二叉树 面试题8:二叉树的下一个节点 面试题9:用两个栈实现队列 面试题10:裴波那契数列 面试题11:旋转数组的最小数字 面试题12:矩阵中的路径 面试题13:机器人的运动...

    java基础面试题删除链表中重复的节点

    java基础面试题删除链表中重复的节点本资源系百度网盘分享地址

Global site tag (gtag.js) - Google Analytics