精华内容
下载资源
问答
  • 主要介绍了C语言实现输出链表倒数第k个节点,主要涉及链表的遍历操作,是数据结构中链表的常见操作。需要的朋友可以参考下
  • 链表倒数第k个节点

    2019-08-27 15:25:13
    链表倒数第k个节点 输入一个链表,输出该链表倒数第k个结点。 public class LinkedList { public Node head; public Node current; public static void main(String[] args) { // TODO Auto-generated ...

    链表中倒数第k个节点

    输入一个链表,输出该链表中倒数第k个结点。

    
    public class LinkedList {
    
    	public Node head;
    	public Node current;
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		LinkedList list = new LinkedList();// 新建一个单链表
    		// 向LinkedList中添加数据
    		for (int i = 0; i < 10; i++) {
    			list.add(i);// 向链表中添加数据
    		}
    		Node result = FindKthToTail(list.head, 1);
    		System.out.println(result.data);
    	}
    
    	public static Node FindKthToTail(Node head, int k) {
    		if (k <= 0)
    			return null;
    		Node p1 = head;
    		Node p2 = head;
    		// p2向前移动k个节点
    		for (int i = 0; i < k - 1; i++) {
    			if (p2 == null)
    				return null;
    			p2 = p2.next;
    		}
    		if (p2 == null)
    			return null;
    		while (p2.next != null) {
    			p1 = p1.next;
    			p2 = p2.next;
    		}
    		return p1;
    
    	}
    
    	// 方法:向链表中添加数据
    	public void add(int data) {
    		// 判断链表为空的时候
    		if (head == null) {// 如果头结点为空,说明这个链表还没有创建,那就把新的结点赋给头结点
    			head = new Node(data);
    			current = head;
    		} else {
    			// 创建新的结点,放在当前节点的后面(把新的结点和链表进行关联)
    			current.next = new Node(data);
    			// 把链表的当前索引向后移动一位
    			current = current.next; // 此步操作完成之后,current结点指向新添加的那个结点
    		}
    	}
    
    	// 节点类
    	class Node {
    		// 注:此处的两个成员变量权限不能为private,因为private的权限是仅对本类访问。
    		int data; // 数据域
    		Node next;// 指针域
    
    		public Node(int data) {
    			this.data = data;
    		}
    	}
    }
    
    
    展开全文
  • 主要介绍了PHP获取链表倒数第K个节点的方法,涉及php针对链表的遍历、判断等相关操作技巧,需要的朋友可以参考下
  • 设计双指针fast和slow,我们要找倒数第 k 个节点,那就让fast指针先走 k 步,然后让两个指针同时开始遍历,当fast为空的时候,此时slow所在的位置就是该链表倒数第k个节点。 代码 /** * Definition for singly-

    题目描述

    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

    解题思路

    设计双指针fastslow,我们要找倒数第 k 个节点,那就让fast指针先走 k 步,然后让两个指针同时开始遍历,当fast为空的时候,此时slow所在的位置就是该链表中倒数第k个节点。

    代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* getKthFromEnd(ListNode* head, int k) {
            struct ListNode* fast = head;
        struct ListNode* slow = head;
        while(k--)
        {
            fast = fast->next;
        }
        while(fast != NULL)
        {
            slow = slow->next;
            fast = fast->next;
        }
        return slow;
        }
    };
    

    运行结果

    在这里插入图片描述

    展开全文
  • 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表倒数第...

    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

     

    示例:

    给定一个链表: 1->2->3->4->5, 和 k = 2.

    返回链表 4->5.

     

    解题思路:

    初始化: 前指针 former 、后指针 latter ,双指针都指向头节点 head​ 。
    构建双指针距离: 前指针 former 先向前走 k 步(结束后,双指针 former 和 latter 间相距 k 步)。
    双指针共同移动: 循环中,双指针 former 和 latter 每轮都向前走一步,直至 former 走过链表 尾节点 时跳出(跳出后, latter 与尾节点距离为 k-1,即 latter 指向倒数第 k 个节点)。
    返回值: 返回 latter 即可。

     

    Python代码:

    # -*- coding:utf-8 -*-
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def FindKthToTail(self, head, k):
            # write code here
            if not head or k <= 0:
                return None
            fast = slow = head
            while k > 0:
                if fast:
                    fast = fast.next
                    k -= 1
                else:
                    return None
            while fast:
                fast = fast.next
                slow = slow.next
            return slow

     

    展开全文
  • 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的...

    学习目标:

    目标:熟练运用Java所学知识


    学习内容:

    本文内容:使用Java实现:链表中倒数第k个节点


    题目描述:

    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。

    例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 k = 2.

    返回链表 4->5.

    解题思路:

    通过观察倒数与正数的关系不难发现,倒数第k个元素就是正数第链表长度减去k+1个元素,所以想要得到这个元素,就可以将链表遍历 长度-k 次即可

    实现代码:

     public static ListNode getKthFromEnd(ListNode head, int k) {
            ListNode cur=head;
            int count=0;//用于保存链表长度
            //通过循环得到链表长度
            while(cur!=null){
                cur=cur.next;//更新当前结点
                count++;
            }
            cur=head;//更新当前结点至头结点
            for(int i=0;i<count-k;i++){
                cur=cur.next;
            }
            return cur;//返回当前结点既倒数第k个节点
        }
    
    展开全文
  • 链表倒数第k个节点

    2015-08-28 11:43:29
    链表倒数第k个节点 题目要求: 1 输入一个单向链表,输出该链表倒数第k个结点, 2 链表倒数第0个结点为链表的尾指针(即与倒数第1个节点) 3 链表为空或者链表结点数小于k,返回空 题目解析: 设置两个...
  •  本文介绍关于链表倒数第k个节点的相关问题,剑指 Offer 22. 链表倒数第k个节点,LC.19 删除链表倒数第 N 个结点 。 剑指 Offer 22. 链表倒数第k个节点  思路:   利用快慢指针技巧,先让快指针走 k 步...
  • 文章目录剑指offer 22 链表倒数第K个节点解题思路:Java代码扩展题一:LeetCode 19 删除链表倒数第N个节点19. 删除链表倒数第 N 个结点解题思路:Java代码扩展题二:LeetCode 876 求链表的中间节点876. 链表的...
  • 查找链表倒数第K个节点,源代码验证通过,两种查找方法。
  • 另外,如果我们已知了链表的长度,为n,那么倒数第k个节点,也就是从前往后的n-k+1个节点,我们从前往后遍历n-k+1即可,然而我们并不知道链表的长度,所以需要先遍历一遍链表,才能取得它的长度,再遍历一边链...
  • 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表倒数第...
  • 21. 链表倒数第k个节点 1 题目描述 ​ 输入一个链表,输出该链表倒数第k个节点...​ 找倒数第k个节点,即地n-k-1个节点,利用快慢指针的思想 3 代码 /** * Definition for singly-linked list. * public clas
  • 链表倒数第k个节点 难度简单 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。 例如,一个链表有6个节点,从头节点开始,它们的值依次是...
  • 19. 删除链表倒数第N个节点 难度中等876收藏分享切换为英文关注反馈 给定一个链表,删除链表倒数第n个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了...
  • 剑指 Offer 22. 链表倒数第k个节点 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点... 常规:遍历链表 链表长度 返回n-k个节点 双指针:一个前驱指针 一
  • 链表倒数第K个节点

    2020-07-28 16:03:26
    输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表倒数第...
  • 查找链表倒数第k个节点 1.题目描述 ​ 输入一个链表,输出该链表倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值...
  • 给定一个链表,删除链表倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. ...当删除了倒数第二个节点后,...即是用一趟扫描倒数第k个节点并且删除 先看...
  • 链表倒数第k个节点 文章目录剑指 Offer 22. 链表倒数第k个节点一、题目描述二、问题分析三、数据结构及算法分析1.数据结构2.涉及算法四、总结五、完整源码 一、题目描述 输入一个链表,输出该链表倒数第k个...
  • 输入一个链表,输出该链表倒数第K个节点。例如:一个链表有6个节点,1--2--3--4--5--6,找倒数第三个节点就是指向4的那个节点链表节点定义如下: struct ListNode { int val; struct ListNode *next; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,374
精华内容 10,549
关键字:

链表找倒数第k个节点