zoukankan      html  css  js  c++  java
  • 【剑指offer】链表倒数第k个节点

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25662121


        在Cracking the Code Interview上做过了一次,这次在九度OJ上測试,AC。

    题目描写叙述:

    输入一个链表,输出该链表中倒数第k个结点。
    (hint: 请务必使用链表。)

    输入:

    输入可能包括多个測试例子,输入以EOF结束。
    对于每一个測试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
    输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。

    输出:

    相应每一个測试案例,
    若有结果,输出相应的查找结果。否则,输出NULL。

    例子输入:
    5 2
    1 2 3 4 5
    1 0
    5
    例子输出:
    4
    NULL

        AC代码;

    /***************************************************
    题目描写叙述:
    找到单链表中倒数第n个元素
    ****************************************************/
    
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Node
    {
    	int data;
    	struct Node *pNext;
    }NODE,*PNODE;
    
    /*
    找到单链表中倒数第k个元素
    */
    PNODE FindKthToLast(PNODE pHead,unsigned int k)
    { 
    	if(pHead==NULL || k<1)
    		return NULL;
    	PNODE p1 = pHead;
    	PNODE p2 = pHead;
    	while(p2!=NULL && k>0)
    	{
    		p2 = p2->pNext;
    		k--;
    	}
    	if(k>0)
    		return NULL;
    	while(p2 != NULL)
    	{
    		p1 = p1->pNext;
    		p2 = p2->pNext;
    	}
    	return p1;
    }
    
    int main()
    {
    	int n,k;
    	while(scanf("%d %d",&n,&k) != EOF)
    	{
    		int i,data;
    		scanf("%d",&data);
    		PNODE pHead =(PNODE)malloc(sizeof(NODE));
    		if(pHead == NULL)
    			exit(EXIT_FAILURE);
    		pHead->data = data;
    		pHead->pNext = NULL;
    
    		PNODE pCur = pHead;
    		for(i=0;i<n-1;i++)
    		{
    			scanf("%d",&data);
    			PNODE pNew =(PNODE)malloc(sizeof(NODE));
    			if(pNew == NULL)
    				exit(EXIT_FAILURE);
    			pNew->data = data;
    			pNew->pNext = NULL;
    			pCur->pNext = pNew;
    			pCur = pCur->pNext;
    		}
    
    		PNODE pFind = FindKthToLast(pHead,k);
    		if(pFind == NULL)
    			printf("NULL
    ");
    		else
    			printf("%d
    ",pFind->data);
    	}
    	return 0;
    }
    
    
    

    /**************************************************************
        Problem: 1517
        User: mmc_maodun
        Language: C
        Result: Accepted
        Time:100 ms
        Memory:2496 kb
    ****************************************************************/

  • 相关阅读:
    九度OJ题目1137:浮点数加法 (JAVA)使用BigDecimal四个案例都通过了,但是超时了。
    九度OJ题目1080:进制转换(java)使用BigInteger进行进制转换
    九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。
    九度OJ题目1443:Tr A (JAVA)
    九度oj题目1207:质因数的个数
    pg 比mysql 强的数据库
    mysql8 sql_mode=only_full_group_by问题解决
    mysql 8.0.19 安装
    springboot + mybatis plus强大的条件构造器queryWrapper、updateWrappe
    Elasticsearch 学习
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4029004.html
Copyright © 2011-2022 走看看