微软100题13题(输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针)

来源:互联网 发布:linux虚拟机修改ip 编辑:程序博客网 时间:2024/06/06 03:07

1python版本

'''Created on 2017-1-18@author: admin第13题(链表):题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:  struct ListNode{  int m_nKey;  ListNode* m_pNext;};'''from _overlapped import NULLclass SimpleList:    def __init__(self,data,k):        self.k=k        if len(data)>0:            self.root=Node(data[0])            tmp=self.root            if len(data)>1:                for i in range(1,len(data)):                    node=Node(data[i])                    tmp.next=node                    tmp=node    def printList(self):        tmp=self.root        while tmp!=NULL:            print(tmp.value,end=",")            tmp=tmp.next        print()    def _printLastKNodes(self,node):        prev=self.root        current=self.root.next        next1=current.next        prev.next=NULL        current.next=prev        while next1.next!=NULL:            prev=current            current=next1            next1=next1.next            current.next=prev        next1.next=current        self.root=next1    def printLastKNodes(self):        self._printLastKNodes(self.root)        i=0        while i <self.k and self.root!=NULL:            print(self.root.value,end=",")            self.root=self.root.next            i+=1class Node:    def __init__(self,value):        self.value=value        self.next=NULLif __name__ == '__main__':    data=[1,2,3,4,5,6,7,8,9]    sl=SimpleList(data,4)    sl.printList()    sl.printLastKNodes()

2java版本

http://blog.csdn.net/hxpjava1/article/details/22433351

3scala版本

package ms/** * 第13题(链表): 题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 链表结点定义如下:   struct ListNode {   int m_nKey;   ListNode* m_pNext; };  */class SimpleList(var k:Int){  var root:Node=null  def this(data:List[Int],k:Int)={    this(k)    if(data.length>0){      this.root=new Node(data(0))      var tmp=this.root      for(i <- 1 until data.length){        tmp.next=new Node(data(i))        tmp=tmp.next      }    }  }    class Node(var value:Int){    var next:Node=null    def this(value:Int,nextNode:Node){      this(value)      this.next=nextNode    }  }    def printLastKNodes(){    var prev=this.root    var current=this.root.next    var next=this.root.next.next    prev.next=null    current.next=prev    while(next.next!=null){      prev=current      current=next      next=next.next      current.next=prev    }    next.next=current    this.root=next    for(i<-0 until k){      print(this.root.value+",")      this.root=this.root.next    }  }}object MicrosSoft013 {  def main(args: Array[String]): Unit = {    val data=List(1,2,3,4,5,6,7,8,9)    val list=new SimpleList(data,4)    list.printLastKNodes()  }  }


0 0
原创粉丝点击