【九度OJ】:链表中倒数第K个节点
2017-03-22 16:58
232 查看
思路:
1,建链表
2,用双链表,将其中一个先循环到K位置,此时将第一个和第二个同时往后走,当第一个链表结束时第二个链表刚好到链表中的第K个节点
AC代码如下:
1,建链表
2,用双链表,将其中一个先循环到K位置,此时将第一个和第二个同时往后走,当第一个链表结束时第二个链表刚好到链表中的第K个节点
AC代码如下:
#include <stdio.h> #include <stdlib.h> typedef struct node{ int number; struct node * next; }Node; int getK(Node *link,int k); int main(){ int n,k,i,temp; int flag; while(scanf("%d %d",&n,&k)!=EOF && n>=0 && n<=1000 && k>=0 && k<=1000 ){ Node *link = (Node *)malloc(sizeof(Node)); link->next = NULL; flag = 0; Node *tail; tail = link; for(i=0;i<n;i++){ scanf("%d",&temp); Node *n = (Node *)malloc(sizeof(Node)); tail->next = n; tail = n; n->number = temp; } int numberK = getK(link,k); numberK ==-1?printf("NULL\n"):printf("%d\n",numberK); } return 0; } int getK(Node *link,int k){ Node *p1,*p2; int i; if(link->next == NULL || k == 0) return -1; p1 = link->next; for(i=1;i<k;i++){ if(p1->next == NULL) return -1; p1 = p1->next; } p2 = link->next; while(p1->next!=NULL){ p1 = p1->next; p2 = p2->next; } return p2->number; }
相关文章推荐
- 链表中倒数第k个节点(九度OJ 1517)
- 华为OJ题目(十九):输出单链表倒数第K个节点
- 华为oj输出单向链表倒数第k个节点
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
- 【华为oj2065】输出单向链表倒数第k个节点
- 九度oj 1517 链表中倒数第k个结点
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
- 【九度OJ1517】|【剑指offer15】链表中倒数第k个结点
- 华为OJ-输出单向链表中倒数第k个节点
- 九度OJ-题目1517:链表中倒数第k个结点
- [链表]九度OJ-1517:链表中倒数第k个结点
- 算法学习-----输出链表的倒数第k个节点
- 经典算法学习——链表中倒数第k个节点
- 华为OJ训练之0008-161230-输出链表倒数第k个数字
- 链表的倒数第K个节点
- 剑指offer-第三章高质量的代码(输出该链表中倒数第K个节点)
- 面试题15:链表中倒数第k个节点
- 剑指Offer——链表中倒数第k个节点
- 剑指Offer15:链表中倒数第k个节点
- 查找链表中倒数第k个节点元素