mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

单链表反转python完成代码示例,python单链代码

时间:2019-06-03 17:18来源:mg4377娱乐手机版
单链表的反转能够应用循环,也足以应用递归的章程 单链表反转python完成代码示例,单链python 单链表的反转能够利用循环,也能够接纳递归的法门 单链表反转python完成代码示例,pyt

单链表的反转能够应用循环,也足以应用递归的章程

单链表反转python完成代码示例,单链python

单链表的反转能够利用循环,也能够接纳递归的法门

单链表反转python完成代码示例,python单链代码。Python单链表简单实现代码,python单链代码

本文实例讲述了Python单链表简单完毕代码。分享给我们供我们参谋,具体如下:

用Python模拟一下单链表,相比较轻便,初学者能够参见参考

#coding:utf-8
class Node(object):
  def __init__(self, data):
    self.data = data
    self.next = None
class NodeList(object):
  def __init__(self, node):
    self.head = node
    self.head.next = None
    self.end = self.head
  def add_node(self, node):
    self.end.next = node
    self.end = self.end.next
  def length(self):
    node = self.head
    count = 1
    while node.next is not None:
      count  = 1
      node = node.next
    return count
  # delete node and return it's value
  def delete_node(self, index):
    if index 1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i==index-1:
        break
      node = node.next
      i  = 1
    tmp_node = node.next
    node.next = node.next.next
    return tmp_node.data
  def show(self):
    node = self.head
    node_str = ''
    while node is not None:
      if node.next is not None:
        node_str  = str(node.data)   '->'
      else:
        node_str  = str(node.data)
      node = node.next
    print node_str
  # Modify the original position value and return the old value
  def change(self, index, data):
    if index 1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i == index:
        break
      node = node.next
      i  = 1
    tmp_data = node.data
    node.data = data
    return tmp_data
  # To find the location of index value
  def find(self, index):
    if index 1 > self.length():
      raise IndexError('index out of bounds')
    i = 0
    node = self.head
    while True:
      if i == index:
        break
      node = node.next
      i  = 1
    return node.data
#test case
n1 = Node(0)
n2 = Node(1)
n3 = Node(2)
n4 = Node(3)
n5 = Node(4)
node_list = NodeList(n1)
node_list.add_node(n2)
node_list.add_node(n3)
node_list.add_node(n4)
node_list.add_node(n5)
#node = node_list.delete_node(3)
#print node
#d = node_list.change(0,88)
data = node_list.find(5)
print data
node_list.show()

越来越多关于Python相关内容感兴趣的读者可查看本站专项论题:《Python数据结构与算法教程》、《Python Socket编制程序本事计算》、《Python函数使用技艺总括》、《Python字符串操作技能汇总》、《Python入门与晋级杰出教程》及《Python文件与目录操作手艺汇总》

可望本文所述对我们Python程序设计具有帮忙。

本文实例讲述了Python单链表轻便完成代码。分享给大家供大家参照他事他说加以考察,具体如下: 用Python模拟一下...

1.循环反转单链表

巡回的艺术中,使用pre指向前二个结点,cur指向当前结点,每一回把cur->next指向pre就能够。

图片 1

代码:

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

def nonrecurse(head):       #循环的方法反转链表 
  if head is None or head.next is None: 
    return head; 
  pre=None; 
  cur=head; 
  h=head; 
  while cur: 
    h=cur; 
    tmp=cur.next; 
    cur.next=pre; 
    pre=cur; 
    cur=tmp; 
  return h; 

head=ListNode(1);  #测试代码 
p1=ListNode(2);   #建立链表1->2->3->4->None; 
p2=ListNode(3); 
p3=ListNode(4); 
head.next=p1; 
p1.next=p2; 
p2.next=p3; 
p=nonrecurse(head);  #输出链表 4->3->2->1->None 
while p: 
  print p.val; 
  p=p.next; 

结果:

4
3
2
1
>>>

1.循环反转单链表

循环的措施中,使用pre指向前3个结点,cur指向当前结点,每回把cur->next指向pre就能够。

图片 2

代码:

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

def nonrecurse(head):       #循环的方法反转链表 
  if head is None or head.next is None: 
    return head; 
  pre=None; 
  cur=head; 
  h=head; 
  while cur: 
    h=cur; 
    tmp=cur.next; 
    cur.next=pre; 
    pre=cur; 
    cur=tmp; 
  return h; 

head=ListNode(1);  #测试代码 
p1=ListNode(2);   #建立链表1->2->3->4->None; 
p2=ListNode(3); 
p3=ListNode(4); 
head.next=p1; 
p1.next=p2; 
p2.next=p3; 
p=nonrecurse(head);  #输出链表 4->3->2->1->None 
while p: 
  print p.val; 
  p=p.next; 

结果:

4
3
2
1
>>>

编辑:mg4377娱乐手机版 本文来源:单链表反转python完成代码示例,python单链代码

关键词: