用 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
效果: 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
相关文章推荐
- Python 实现通过指针实现链表翻转,链表奇偶下标交换,链表的冒泡排序
- 每日一省之————利用数组和链表实现一个简单的HashMap
- 利用数组和链表实现简单的哈希表
- 利用模板实现简单的栈类(数组和单链表)
- 利用HashSet实现数组重复对象属性简单合并
- 利用数组和链表实现优先队列
- 利用Python实现简单的相似图片搜索的教程
- 数组链表的简单实现
- Python 中利用urllib2简单实现网页抓取
- 36. 微软面试题:请修改append函数, 利用函数实现(链表)
- Python 实现简单的单向链表
- 利用python2.7自带的简单的web服务器SimpleHTTPServer实现web页面的访问
- Python 使用由单链表构建的数组实现有边际优先队列 (基于class, 包含迭代器)
- 利用JAVA数组模拟集合实现简单的对象数组的添加
- 简单介绍Python中利用生成器实现的并发编程
- 一个简单的实现matlab数组下标操作的类实现
- linux网络编程二十一:利用SIGALRM信号,实现一个简单的基于升序链表的定时器
- 利用数组下标实现从任意位置开始得循环
- 利用数组操作实现灰度图像的上下左右翻转(C++&opencv)
- 利用可变数组实现简单通讯录操作