您的位置:首页 > 其它

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

2017-01-18 10:15 836 查看

1python版本

'''
Created on 2017-1-18

@author: admin
第13题(链表):
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};

'''
from _overlapped import NULL
class 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+=1
class Node:
def __init__(self,value):
self.value=value
self.next=NULL
if __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()
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐