zoukankan      html  css  js  c++  java
  • 7-1 求链式线性表的倒数第K项 (20 分)

    给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

    输入格式:

    输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

    输出格式:

    输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL

    输入样例:

    4 1 2 3 4 5 6 7 8 9 0 -1
    

      

    输出样例:

    7
    

      非常规做法:

    #include <stdio.h>
    #include <malloc.h>
    int main()
    {
        int K, temp, len=0, isTrue = 0;
        int *num;
        scanf("%d", &K);
        num = (int *)malloc(sizeof(int)*K);
        while(scanf("%d", &temp)!=EOF)
        {
            if(temp>=0)
               num[len++] = temp;//从前往后覆盖
    
            if(len == K)
            {
                len %= K;
                isTrue = 1;
            }
        }
        if(isTrue)                 //因为从前往后覆盖所以输入最后一个数据在数组中的前一个位置
            printf("%d", num[len]);//上的数就是此K个数中的第一个数,也就是所有数据的倒数第K个数
                                   
        else
            printf("NULL");
    }
    //  4 1 2 3 4 5 6 7 8 9 0 -1
    

      

     常规做法:
    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    typedef struct LNode
    {
        int data;
        struct LNode * next;
    }LNode, *List;
    int main()
    {
        List L;
        L = (LNode*)malloc(sizeof(LNode));
        L->next = NULL;
        LNode *temp, *p = L;
        int data, k, len=0;
        scanf("%d", &k);
        while(scanf("%d", &data)!=EOF){
            if(data < 0)
                break;
            temp = (LNode *)malloc(sizeof(LNode));
            temp->next = NULL;
            temp->data = data;
            p->next = temp;
            p = temp;
            len++;
        }
        len = len - k + 1;
        if(len < 1)
            printf("NULL");
        else{
            p = L;
            while(len > 0){
                p = p->next;
                len--;
            }
            printf("%d", p->data);
        }
    }
    

      

  • 相关阅读:
    React Native组件之Text
    React Native的组件ListView
    React Native中的网络请求fetch和简单封装
    解决FileUpload上传大文件报错
    以EF形式操作mysql数据库
    以ADO形式操作mysql数据库
    Docker
    Docker创建镜像文件并在容器中运行
    WIN10下的Docker安装
    MySQL安装
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9648752.html
Copyright © 2011-2022 走看看