这里主要表现一下链表的转置过程。链表转置主要有两类方:
一类是Iterative 就是使用循环,另外一种是recursion(递归)。
这里主要讨论循环。
链表:
- 初始化
class LinkNode():
def __init__(self,value=0,next=None):
self.value=value
self.next=next
由于python没有像C 一样指针类object,由next 代替
- reverse 具体步骤
新建result 链表初始化为none
Result:
将当前链表的header切断并链接到result的head上往复循环直到末尾
result
原来的链表就变成了这样,继续移动head
result
重复此步骤直到循环中节点为None. 具体代码如下:
class LinkNode():
def __init__(self,value=0,next=None):
self.value=value
self.next=next
def reverse(self):
result=None #Initialize result chain
link=self #copy self parameter
while link is not None:
temp=result
b=LinkNode(link.value,temp)
link=link.next #update node
result=b
return result
- 时间复杂度
这个循环需要遍历链表上所有node n, 然后在每个链表中假设 assign value 以及create instance 的时间都为常数 θ ( 1 ) \theta(1) θ(1).
那么整体的时间复杂度为 θ ( n ) \theta(n) θ(n)
新人第一次发文。以上是我刷到链表部分编程题的一些感悟。希望大神提出改进,也希望和我一样正在申请的同学早日拿到offer。