微软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/224333513scala版本
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() } }
相关文章推荐
- 13输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 微软算法100道题------输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 微软面试100题之13题:输入一个单向链表,输出该链表中倒数第k 个结点
- 面试题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 13.输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 11. 微软面试题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针
- 输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 13、输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0个结点为链表的尾指针。
- 输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表 的尾指针
- 今天开始学Java 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
- 微软面试之13 输入一个单向链表 输出该链表的倒数第k个节点
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)
- [java 面试100道]13.输入一个单向链表,输出该链表中倒数第k个结点。
- 13 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第 k 个结点。链表的倒数第0 个结点为链表的尾指针。
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 输入一个单向链表,输出该链表中倒数第K个结点
- 输入一个单向链表,输出该链表中倒数第K个结点