zoukankan      html  css  js  c++  java
  • 【牛客】找出单向链表中的一个节点,该节点到尾指针的距离为K

    题目链接:https://www.nowcoder.com/practice/0cff324157a24a7a8de3da7934458e34

    题目描述

    找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。
    链表结点定义如下:
    struct ListNode
    {
        int m_nKey;
        ListNode* m_pNext;
    }
    链表节点的值初始化为1,2,3,4,5,6,7。

    输入描述:

    该节点到尾指针的距离K

    输出描述:

    返回该单向链表的倒数第K个节点,输出节点的值
    示例1

    输入

    复制
    2

    输出

    复制
    6

    备注:

    请自觉实现一个链表,将1到7依次加入链表,然后再寻找倒数第K个节点。要求加节点与找节点的操作复杂度均为O(n)。
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 struct ListNode
     4 {
     5     int m_nKey;
     6     struct ListNode *m_pNext;
     7 }*newl;
     8 int main()
     9 {
    10     int k;
    11     scanf("%d",&k);
    12     int i;
    13     struct ListNode *newlist=(struct ListNode*)malloc(sizeof(struct ListNode));
    14     newlist->m_nKey=1;
    15     newlist->m_pNext=NULL;  
    16     struct ListNode *head=newlist;
    17     for(i=2;i<=7;i++){
    18         struct ListNode *tmp=(struct ListNode*)malloc(sizeof(struct ListNode));
    19         tmp->m_nKey=i;
    20         tmp->m_pNext=NULL;
    21         head->m_pNext=tmp;
    22         head=tmp;
    23     }
    24     int cnt=1;
    25     head=newlist;
    26     while(head){
    27         if(cnt==(8-k)){
    28             printf("%d
    ",head->m_nKey);
    29             return 0;
    30         }
    31         cnt++;
    32         head=head->m_pNext;
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    单片机编程积累算法
    关于GSM基站定位
    GSM模块fibocom G510使用记录
    指爱 打字比赛记录
    硬件和软件工程师
    GPS模块启动模式说明
    阻容降压电路分析
    饮水机电路-工作剖析
    跑步,去
    day01 IT知识架构,操作系统简介
  • 原文地址:https://www.cnblogs.com/shixinzei/p/12670787.html
Copyright © 2011-2022 走看看