数据结构

数据结构算法之链表

链表面试总结,使用python实现,参考:https://www.cnblogs.com/lixiaohui-ambition/archive/2012/09/25/2703195.html #coding:utf-8 # 定义链表 class ListNode: def __init__(self): self.data = None self.pnext = None # 链表操作类 class ListNode_handle: def __init__(self): self.cur_node = None # 链表添加元素 def add(self,data): ln = ListNode() ln.data = data ln.pnext = self.cur_node self.cur_node = ln return ln # 打印链表 def prt(self,ln): while ln: print(ln.data,end=" ") ln = ln.pnext # 逆序输出 def _reverse(self,ln): _list = [] while ln: _list.append(ln.data) ln = ln.pnext ln_2 = ListNode() ln_h = ListNode_handle() for i in _list: ln_2 = ln_h.

继续阅读

数据结构算法之合并两个有序序列

有序序列的合并,python实现。 #coding:utf-8 a = [2,4,6,8,10] b = [3,5,7,9,11,13,15] c = [] def merge(a,b): i,j = 0,0 while i<=len(a)-1 and j<=len(b)-1: if a[i]<b[j]: c.append(a[i]) i+=1 else: c.append(b[j]) j+=1 if i<=len(a)-1: for m in a[i:]: c.append(m) if j<=len(b)-1: for n in b[j:]: c.append(n) print(c) merge(a,b) 运行结果为: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15]

继续阅读

数据结构算法之排序

数据结构面试中经常会被问到篇排序相关的问题,那么这篇文章会研究下怎么用python来实现排序。 冒泡排序 #coding:utf-8 # 冒泡排序 def maopao(): a = [2,1,4,3,9,5,6,8,7] for i in range(len(a)-1): for j in range(len(a)-1-i): if a[j]>a[j+1]: temp = a[j] a[j] = a[j+1] a[j+1] = temp print(a) maopao() 结果为: [1, 2, 3, 4, 5, 6, 7, 8, 9] 归并排序 # 归并排序 def merge(a,b): i,j = 0,0 c = [] while i<=len(a)-1 and j<=len(b)-1: if a[i]<b[j]: c.append(a[i]) i+=1 else: c.append(b[j]) j+=1 if i<=len(a)-1: for m in a[i:]: c.

继续阅读

数据结构算法之二叉树

数据结构面试中经常会被问到篇二叉树相关的问题,那么这篇文章会研究下怎么用python来进行二叉树的构建和遍历。 注意:py2中 print root.elem, 在py3中要换成 print (root.elem,end=" ") # coding:utf-8 # 定义节点类 class Node: def __init__(self,elem = -1,): self.elem = elem self.left = None self.right = None # 定义二叉树 class Tree: def __init__(self): self.root = Node() self.myqu = [] # 添加节点 def add(self,elem): node = Node(elem) if self.root.elem == -1: # 判断如果是根节点 self.root = node self.myqu.append(self.root) else: treenode = self.myqu[0] if treenode.left == None: treenode.left = node self.

继续阅读