数据结构
一如故往
这个作者很懒,什么都没留下…
展开
-
练习:单链表的基本操作
class Node(object): """"节点""" def __init__(self,elem): self.elem = elem self.next = Noneclass SIngleLinkList(object): """"单链表""" def __init__(self,node原创 2018-03-17 21:08:11 · 341 阅读 · 0 评论 -
Python内置类型性能分析
Python内置类型性能分析timeit模块timeit模块可以用来测试一小段Python代码的执行速度。class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)Timer是测量小段代码执行速度的类。stmt参数是要测试的代码语句(statment);setup参数是运行代码时需要的设置;timer参数是...原创 2018-04-27 17:58:21 · 253 阅读 · 0 评论 -
时间复杂度
算法效率衡量执行时间反应算法效率对于同一问题,我们给出了两种解决算法,在两种算法的实现中,我们对程序执行的时间进行了测算,发现两段程序执行的时间相差悬殊(214.583347秒相比于0.182897秒),由此我们可以得出结论:实现算法程序的执行时间可以反应出算法的效率,即算法的优劣。单靠时间值绝对可信吗?假设我们将第二次尝试的算法程序运行在一台配置古老性能低下的计算机中,情况会如何?很可能运行的时...原创 2018-04-27 17:51:40 · 304 阅读 · 0 评论 -
栈实现表达式求值(C++)
为了实现用栈计算算数表达式的值,需设置两个工作栈:用于存储运算符的栈opter,以及用于存储操作数及中间结果的栈opval。算法基本思想如下:(1)首先将操作数栈opval设为空栈,而将'#'作为运算符栈opter的栈底元素,这样的目的是判断表达式是否求值完毕。(2)依次读入表达式的每个字符,表达式须以'#'结尾,若是操作数则入栈opval,若是运算符,则将此运算符c与opter的栈顶元素top比...转载 2018-05-11 11:10:22 · 27074 阅读 · 22 评论 -
栈和队列的实现(利用顺序表)
栈的实现class Stack(object): """"栈""" def __init__(self): self.__list = [] def push(self,item): """添加一个新的元素item到栈顶""" self.__list.append(item) def pop(se原创 2018-03-20 19:29:50 · 257 阅读 · 0 评论 -
栈和队列
栈栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In F...原创 2018-03-20 17:30:25 · 232 阅读 · 0 评论 -
位运算
4. 位运算看如下示例:如果有一个十进制数 5,其二进制为:0000 0101把所有的数向左移动一位 其结果为: 0000 1010想一想:二进制 0000 1010 十进制是多少呢???其答案为10,有没有发现是5的2倍呢!再假设有一个十进制数 3, 其二进制 为:0000 0011把所有的数向左移动一位 其结果为: 0000 0110二进制0000 0110 的十进制为6,正好也是3的2倍通过...原创 2018-03-19 19:57:53 · 846 阅读 · 0 评论 -
双向链表及基本操作的实现
双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。操作is_empty() 链表是否为空length() 链表长度travel() 遍历链表add(item) 链表头部添加append(item) 链表尾部添加insert(pos, item) 指定位置添加re...原创 2018-03-18 15:49:07 · 405 阅读 · 0 评论 -
单向循环链表的创建及基本操作的实现
单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 操作is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历add(item) 在头部添加一个节点append(item) 在尾部添加一个节点insert(pos, item) 在指定位置pos添加节点remove(item) 删除一个节点se...原创 2018-03-18 15:45:37 · 2462 阅读 · 0 评论