python mysql l链式查询_python 数据结构之链式存储

#-*- coding: utf-8 -*-

# Definition for singly-linked list.class ListNode(object):

def __init__(self, x, Node=None):

self.val = x

self.next = Node

def __repr__(self):

'''

用来定义Node的字符输出,

print为输出data

'''

return str(self.val)

class Chain(object):

def __init__(self,head=None,length=0):

self.head = head

self.length = length

def isEmpty(self):

return (self.length == 0)

def appendNode(self,dataOrNode):#在末尾增加一个节点 item = None

if isinstance(item,ListNode):

item = dataOrNode

else:

item = ListNode(dataOrNode)

if not self.head:

self.head = item

self.length += 1

else:

node = self.head

while node.next: #遍历到最后一个节点 node = node.next

node.next = item

self.length += 1

def deleteNode(self,index):

if self.isEmpty():

print "this chain table is empty."

return

if index <0 or index >= self.length:

print 'error: out of index'

return

if index == 0:

self.head = self.head.next

self.length -= 1

return

#遍历到该index,记录这个index节点的前一个跟后一个

#将前一个节点的next 指向下个节点就Over #pre_node 记录index的前一个节点,node记录当前节点 start = 0##第一个节点位置 pre_node = self.head

node = self.head

while node.next and start < index:

pre_node = node

node = pre_node.next

start += 1

if start == index:

index_node = node

pre_node.next = node.next

self.length -= 1

def updateNode(self,index,data):

if index <0 or index >= self.length:

print 'error: out of index'

return

start = 0 ##第一个节点位置 node = self.head

while node.next and start < index:

node = node.next

start += 1

if start == index:

node.val = data

def getItem(self,index):

if index < 0 or index >= self.length:

print 'error: out of index'

return

start = 0 ##第一个节点位置 node = self.head

while node.next and start < index:

node = node.next

start += 1

return node.val

def getIndex(self,data):

if self.isEmpty():

print "this chain table is empty."

return

start = 0

node = self.head

while node:

if node.val == data:

return start

else:

node = node.next

start += 1

if start == self.length:

print "%s not found" % str(data)

return

def insertNode(self,index,data):

item = None

if isinstance(item, data):

item = data

else:

item = ListNode(data)

if index <0 or index >= self.length:

print 'error: out of index'

return

if index == 0:

head = self.head

self.head = data

self.head.next = head

self.length += 1

return

else:

start = 0 ##第一个节点位置 pre_node = self.head

next_node = self.head

while next_node.next and start < index:

pre_node = next_node

next_node = pre_node.next

start += 1

if start == index:

pre_node.next = item

item.next = next_node

self.length += 1

def clear(self):

self.head = None

self.length = 0

def generateNonde(self,items1, items2):

items1_list = []

items2_list = []

for i in items1:

if i in ['0','1','2','3','4','5','6','7','8','9']:

items1_list.append(int(i))

for y in items2:

if y in ['0','1','2','3','4','5','6','7','8','9']:

items2_list.append(int(y))

chain1 = Chain()

chain2 = Chain()

for i in items1_list:

chain1.appendNode(i)

for y in items2_list:

chain2.appendNode(y)

return chain1, chain2, chain1.length,chain2.length

class Solution(object):

def addTwoNumbers(self, l1, l2,length1,length2):

"""

:type l1: ListNode

:type l2: ListNode

:rtype: ListNode

"""

list1_str = ''

list2_str = ''

chain3 = Chain()

for i in range(length1, 0, -1):

list1_str += str(l1.getItem(i - 1))

for y in range(length2, 0, -1):

list2_str += str(l2.getItem(y - 1))

result = int(list1_str) + int(list2_str)

result = str(result)

print result, type(result)

for i in range(len(result), 0, -1):

chain3.appendNode(int(result[i - 1]))

return [chain3.getItem(i) for i in range(chain3.length)]

if __name__ == '__main__':

chain1, chain2, length1,length2 = Chain().generateNonde("[2,4,3]", "[7,7,9]")

result = Solution().addTwoNumbers(chain1, chain2,length1,length2)

print result

# for i in range(result.length): # print result.getItem(i)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值