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

来源:互联网 发布:淘宝怎么买黑客肉鸡 编辑:程序博客网 时间:2024/06/06 02:17

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       



0 0
原创粉丝点击