六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

2009计算机考研题:查找链表中倒数第k个结点

[复制链接]

升级  41.6%

606

主题

606

主题

606

主题

探花

Rank: 6Rank: 6

积分
1832
 楼主| 发表于 2013-2-3 14:37:56 | 显示全部楼层 |阅读模式


原理:两个指针先都指向头指针的下一节点,一个指针先走K-1步,然后俩指针再一起走,后走的指针所指为所求,注意边界处理。

    class Node{          Node link;          int data;                    public Node(){}          public Node(int m) {              data = m;          }                }      public class MyLinkList {                    public Node createLinkList(int[] a){                            Node head_node = new Node();              Node temp_node = head_node;              for(int m : a){                  Node n = new Node(m);                  temp_node.link = n;                  temp_node = n;              }              return head_node;          }                    public int printK_NodeOfCountFromEnd(Node head_node,int k){                            if(null == head_node || k <= 0)                  return 0;              Node temp1_node = head_node.link;              for(int i = 0; i < k-1 && null != temp1_node; i++)                  temp1_node = temp1_node.link;              if(null == temp1_node)                  return 0;              Node temp2_node = head_node.link;              while(null != temp1_node.link){                  temp1_node = temp1_node.link;                  temp2_node = temp2_node.link;              }              System.out.println(temp2_node.data);              return 1;          }          public static void main(String[] args){              MyLinkList list = new MyLinkList();              int[] a = {1,4,2,5,3};              list.printK_NodeOfCountFromEnd(list.createLinkList(a), 2);          }                }  

运行:
C:\test>java  MyLinkList
5

文章转自:http://blog.csdn.net/nash_/article/details/8205491

源码:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表