您的位置:首页 > 编程语言 > Python开发

用 Python实现链表的翻转,奇偶下标修改(利用数组,非常简单)

2017-05-03 10:44 477 查看
1. 首先是链表翻转

效果: 0->1->2->3 ...... ->9     变为   9->8->7->......->0

class NodeList:
def __init__(self,x):
self.next = None
self.val = x

def reverse(root):
save = []
head = root
while(head!=None):
save.append(head)
head = head.next
p = head = save.pop()

while(save):
head.next = save.pop()
head = head.next
head.next = None
return p

head = tmp = NodeList(-1)

for i in range(10):
tmp.next = NodeList(i)
tmp = tmp.next

res = reverse(head.next)

while(res!=None):

print(res.val)
res = res.next

2. 将所有下标为偶数的节点放在奇数节点前面
效果:效果: 0->1->2->3 ...... ->9     变为   0->2->4->6->8->1->3->.......->9

class NodeList:
def __init__(self,x):
self.next = None
self.val = x

def reverse(root):
ji = []
ou = []
head = root
save = []
while(head!=None):
save.append(head)
head = head.next
while(save):
ou.append(save.pop(0))
if(len(save)==0):
break
ji.append(save.pop(0))
head = p = ou.pop(0)
while(ou):
head.next = ou.pop(0)
head = head.next
while(ji):
head.next = ji.pop(0)
head = head.next
head.next = None

return p

head = tmp = NodeList(-1)

for i in range(10):
tmp.next = NodeList(i)
tmp = tmp.next

res = reverse(head.next)

while(res!=None):

print(res.val)
res = res.next

3. 将所有奇偶下标的节点交换位置
效果: 0->1->2->3 ...... ->9     变为   1->0->3->2->5->4->7->6->9

class NodeList:
def __init__(self,x):
self.next = None
self.val = x

def reverse(root):
ji = []
ou = []
head = root
save = []
while(head!=None):
save.append(head)
head = head.next
while(save):
ou.append(save.pop(0))
if(len(save)==0):
break
ji.append(save.pop(0))
head = p = ji.pop(0)
while(ji):
head.next = ou.pop(0)
head = head.next
head.next = ji.pop(0)
head = head.next

return p

head = tmp = NodeList(-1)

for i in range(10):
tmp.next = NodeList(i)
tmp = tmp.next

res = reverse(head.next)

while(res!=None):

print(res.val)
res = res.next
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: