import java.util.Scanner; public class List { private Node first; private int N; class Node{ int data; Node next; } //顺便复习一下链表 public int size() { return N; } public boolean isEmpty() { return first==null; } public Node FindPrev(int pos){ Node tmp=first; for(int i=1;i<=pos-1;i++) tmp=tmp.next; return tmp; } public boolean insert(int n,int pos){ if(pos>n || pos<=0){ System.out.println("illegal insert postion"); return false; } Node tmp; tmp=FindPrev(pos); Node node=new Node(); node.data=n; node.next=tmp.next; tmp.next=node; N++; return true; } //链表直接当栈使用 public void push(int n){ Node oldfirst=first; first=new Node(); first.data=n; first.next=oldfirst; N++; } public int GetInverseKth(int k){ Node p=first; Node q=first; while((k--)>0){ p=p.next; } while(p!=null){ p=p.next; q=q.next; } return q.data; } public void print(){ Node tmp=first; while(tmp!=null){ System.out.print(tmp.data+" "); tmp=tmp.next; } System.out.println(); } public static void main(String[] args) { List l=new List(); for(int i=1;i<=10;i++){ l.push(i); } l.print(); int k; System.out.println("请输入k:"); Scanner cin=new Scanner(System.in); k=cin.nextInt(); int val=l.GetInverseKth(k); System.out.println("倒数第 "+k+" 个结点的值为:"+val); } } /* test output 10 9 8 7 6 5 4 3 2 1 请输入k: 7 倒数第 7 个结点的值为:7*/
找出单向链表中的倒数第k个结点,布布扣,bubuko.com
原文地址:http://blog.csdn.net/dutsoft/article/details/26397745