自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 收藏
  • 关注

原创 python数据结构学习笔记-2016-11-09-01-文本编辑器

9.5 应用:文本编辑器        本节将多重链表应用于编辑缓冲ADT(Edit Buffer ADT)。        9.5.1 编辑操作        布局        通常将文本以行和列的形式组织起来。每一行有无限的长度,每一行的大小可能不同,但末尾都有换行符。一个空的文本,只有一行空行以及一个换行符。        文本光标        文本光标由行号以及

2016-11-09 20:56:51 946 1

原创 python数据结构学习笔记-2016-11-07-03-多重链表以及相应的迭代器

9.3 多重链表        多重链表(multi-linked list):每一个结点都含有多个指针,之前的双链表就是多重链表。        9.3.1 多条链        下图就是多重链表的一个例子:# 多重链表的结点class StudentMListNode(object): def __init__(self, data): se

2016-11-07 22:52:17 644

原创 python数据结构学习笔记-2016-11-07-02-环形链表

9.2 环形链表        环形链表(circlar linked list)将所有结点组织成环形。与单链表不同的是,最后一个结点的next指针指向首元结点。(首元结点的prev指针指向最后一个结点。)         通常情况下,可以使用一个外部指针指向最后一个结点,方便向前遍历或者向后遍历。# 遍历def traverse(listRef):

2016-11-07 21:33:52 353

原创 python数据结构学习笔记-2016-11-07-01-双链表

9.1 双链表        双链表(doubly link list):与之前的单链表不同的是,每一个结点有两个指针,一个指向下一个结点,另外一个指向上一个结点。        双链表中有两个指针,分别为头指针和尾指针,分别指向第一个结点和最后一个结点。                双链表的操作        遍历        双链表可以允许向前遍历,也可以向后遍历。

2016-11-07 20:34:33 333

原创 python数据结构学习笔记-2016-11-05-03-计算机仿真

8.4 应用:计算机仿真        8.4.1 航空公司票务柜台        本节对航空公司票务柜台进行仿真模拟。        队列系统建模       我们通过离散时间仿真来建模,这个仿真是一系列能显著改变系统的事件。它由时间驱动,并运行给定的时间。用户可以使用一些参数来设定系统。在这里,这些参数是系统运行的时长;柜台数量;完成一次交易的时间;顾客到来的时间分

2016-11-05 18:22:15 419

原创 python数据结构学习笔记-2016-11-05-02-优先级队列

8.3 优先级队列        8.3.1 优先级队列ADT        优先级队列:每次从队列中取出的应该是具有最高优先权的元素,这种队列称为优先级队列(priority queue)。        优先级队列根据优先级的有界与否,分为两种类型:有界优先级队列和无界优先级队列。        有界优先级队列(bounded priority queue)的优先权p在一定的范

2016-11-05 16:34:37 593

原创 python数据结构学习笔记-2016-11-05-01-队列ADT及其实现

8.1 队列ADT       队列(queue):只能在一端插入元素,在另一端删除元素的容器。其特点是先进先出(first-in first-out, FIFO)。       插入元素的一端称为后端(back),也称为队尾,删除元素德一端称为前端(front),也称为队头。       其具有如下属性:Queue():创建空队列;isEmpty():判断当前队列是否为空

2016-11-05 10:47:38 838

原创 python数据结构学习笔记-2016-11-02-02-迷宫问题

7.4 迷宫问题        7.4.1 回溯        蛮力法(brute-force method):穷举所有可能,一一验证。这种方法效率较低。        回溯法(backtracking):通过部分返回来排除解决问题可能途径进而找出正确途径的过程,例如说解决迷宫问题就可以用回溯法。相应的算法称为回溯算法。        7.4.2 设计解决方案        问

2016-11-02 22:01:52 4234

原创 python数据结构学习笔记-2016-11-02-01-栈的应用

7.3 应用        7.3.1 括号匹配        无论是在计算表达式还是在C++代码中,都会碰到括号匹配问题。如以下的C++代码:int sumList(int theList[], int size){ int sum = 0; int i = 0; while(i < size) { sum += theList[i]; i += 1;

2016-11-02 20:41:10 397

原创 python数据结构学习笔记-2016-11-01-01-栈ADT及其实现

7.1 栈ADT       栈(stack)是只允许在一端进行插入或删除元素操作的储存容器,其特点是后进先出(last-in first-out, LIFO)。       其允许插入删除的一端称为栈顶(top),另一端称为栈底(bottom)。没有任何元素时称为空栈。       栈ADT应包含的属性:Stack():创建一个空栈;isEmpty():判断栈是否为空;l

2016-11-01 22:15:47 1062

原创 python数据结构学习笔记-2016-10-28-03-用链表实现多项式ADT

6.6 多项式        6.6.1 多项式操作        6.6.2 多项式ADTPolynomial():构造多项式实例,每一项系数初始化为零;Polynomial(degree, coefficient):构造多项式实例,次数为degree和系数为coefficient 的单项式;degree():返回多项式的最高次数;getitem(degree):返回多项式中

2016-10-29 00:12:42 1063

原创 python数据结构学习笔记-2016-10-28-02-使用链表实现稀疏矩阵

6.5 使用链表实现稀疏矩阵       6.5.1 实现       使用一个数组来储存稀疏矩阵的行,数组的一个元素指向稀疏矩阵的每一行,而每一行的非零元素以链表表示。所以每一个结点只需储存列号和相应的数值即可。#-*-coding: utf-8-*-# 使用排序链表的数组来实现稀疏矩阵from myarray import Arrayclass Spar

2016-10-28 23:15:46 848

原创 python数据结构学习笔记-2016-10-28-01-带尾指针的链表和排序链表

6.4.1 带尾指针的链表        在单链表的末尾,加上一个指针用于指向链表的最后一个结点。        追插元素(append)        在链表的最后一个结点,增加新的结点,如果使用尾指针的话,较为便利。只需将尾指针指向新结点,并将原来最后一个结点指向新结点即可。def append(head, tail, item): newNode = ListNode

2016-10-28 22:14:26 636

原创 python数据结构学习笔记-2016-10-27-02-使用单链表实现包ADT

6.3 使用单链表实现包ADT       6.3.1 实现#-*-coding: utf-8-*-# 使用单链表实现包ADTclass Bag(object): def __init__(self): self._head = None # 底层单链表头指针 self._size = 0 # 追踪单链表长度 def __len__

2016-10-27 22:46:09 583

原创 python数据结构学习笔记-2016-10-27-01-链表

6.1 简介        结点(node):包含数据以及至少一个指向另一个结点的指针。        链式结构(linked structure):包含结点的容器。        链表(linked list):每个结点一个接一个串联起来的链式结构。        头结点:指向链表第一个结点(首元结点)的结点,其数据域不储存链表,其指针称为头指针(head pointer)。

2016-10-27 22:30:24 465

原创 python数据结构学习笔记-2016-10-24-02-使用排序列表实现集合ADT

5.4 集合ADT        在之前使用列表实现的集合ADT中,使用线性搜索在未排序列表查找元素,这是非常低效的。本节使用排序列表来实现集合ADT#-*-coding: utf-8-*-# 使用已排序列表实现集合ADTclass MySet(object): def __init__(self): self._theElements = list()

2016-10-24 22:11:21 494

原创 python数据结构学习笔记-2016-10-24-01-排序列表

5.3 排序列表       5.3.1 排序列表的保持       对于向一个已排序的列表中添加一个元素,要想保持列表仍然是排好序的,就必须找出该元素的准确插入位置,这其中就可以使用二分法来查找准确插入位置。#-*-coding: utf-8-*-# 利用二分法返回插入元素在排序序列中的正确插入位置def findSortedPosition(theList, target)

2016-10-24 21:07:46 319

原创 python数据结构学习笔记-2016-10-23-02-排序

5.2 排序        排序(sorting)是将一系列数据进行重组的过程。        5.2.1 冒泡排序        冒泡排序(bubble sort),是对含n个元素的序列s进行n-1轮遍历(假定要进行升序排列),每一轮遍历,如果s[i] > s[i+1],那么交换两者的值,这样第一轮就可以确保最大的元素排在末尾,第二轮可以确定次大的元素可以排在倒数第二的位置,依次类推

2016-10-23 22:30:29 243

原创 python数据结构学习笔记-2016-10-23-01-搜索

5.1 搜索       搜索(Searching)是基于特定标准从数据的集合中选出特定信息的过程。       序列搜索(sequence search)是通过使用特定的搜索关键字(search key)从序列中找出特定项。       关键字(key)是一个独一无二的值,它用于在序列中找出特定项。它可以是简单的数据类型,也可以是复杂的数据类型(复合关键字)。      5.1.

2016-10-23 21:37:17 230

原创 python数据结构学习笔记-2016-10-22-03-稀疏矩阵

4.5 应用:稀疏矩阵        稀疏矩阵(Sparse Matrix):一个矩阵中大部分元素都是零元素的矩阵(m × n),即其非零元素个数k         与稀疏矩阵相反的是稠密矩阵。        如果采用二维数组来实现稀疏矩阵,就意味着大部分的内存都会用来储存零元素,这就会造成内存的极大浪费,相关操作也会变得低效(?)。        基于此,本节来考虑使用pytho

2016-10-22 13:38:02 1509

原创 python数据结构学习笔记-2016-10-22-02-评价集合ADT

集合ADT#-*-coding: utf-8-*-# 使用python列表实现集合ADTclass MySet(object): def __init__(self, *initElements): self._theElements = list(initElements) # 集合的基数 def __len__(self):

2016-10-22 10:38:52 294

原创 python数据结构学习笔记-2016-10-22-01-评价python列表

4.2 评价python列表       列表操作最坏情况v = list()O(1)v = [0] * nO(n)v[i] = xO(1)v.append(x)O(n)v.extend(w)O(n)v.insert(x)O(n)v.pop()O(n)

2016-10-22 09:20:42 292

原创 python数据结构学习笔记-2016-10-21-01-复杂度分析

程序执行时间取决于以下几个因素:数据量;硬件类型和执行时刻,关于执行时刻,按书中说是是否有其他程序在同时运行;编程语言和编译器也是一大关键因素。        4.1 复杂度分析        评价一个算法的效率,可以数逻辑比较、数据交换以及算术运算的数目。        比如说计算n×n矩阵的所有数值之和。>>> totalSum = 0>>> for i in

2016-10-21 19:39:51 857

原创 python数据结构学习笔记-2016-10-17-03-多维数组

3.3 多维数组        3.3.1 多维数组ADT        多维数组包含了一组通过多个维度组织起来的数据。相应的索引是元组(i1, i2, ..., in)。MultiArray(d1, d2, .., dn):创建多维数组,并将所有值初始化为None,注意要传入可变参数 。维度最高从d1开始,一直到dn;dims():返回维度数;clear(value):将多维

2016-10-17 22:26:49 1355

原创 python数据结构学习笔记-2016-10-17-02-映射

python当中的字典类型就是映射,本节主要实现映射这一ADT。       3.2.1 映射ADT       映射是通过关联唯一的键来储存数据记录的容器。这些键组件必须可以相互比较(不能相互比较,怎么显示唯一性)。具有如下方法:Map():创建映射;length():返回映射中键值对数目;contains(key):判断映射中是否存在给定键;add(key, value):

2016-10-17 20:52:52 401

原创 python数据结构学习笔记-2016-10-17-01-集合

集合是储存不重复事物的容器。        3.1 集合ADT        集合具有无重复元素,无序等特点。其具有方法:Set():创建空集合;length():返回集合的基数,可使用len()函数;contains(element):判断给定元素是否在集合中;add(element):向集合添加一个元素;remove(element):删去集合中的一个元素,若元素不存在,则

2016-10-17 20:24:44 276

原创 python数据结构学习笔记-2016-10-15-02-生命游戏

2.5 生命游戏        生命游戏由英国数学及John H.Conway设计,是一个零人游戏。        2.5.1 游戏规则        这个游戏使用一张无限大的直角坐标网格,每一个网格可以由一个细胞占据,当一个网格被细胞占据,称为活的(alive),而空网格被称为死的(dead),也可以以活细胞和死细胞称呼。        游戏的每一轮称为一代(generation

2016-10-15 11:57:51 2699

原创 python数据结构学习笔记-2016-10-15-01-矩阵ADT

2.4 矩阵ADT       矩阵是一个大小为m×n的数值表,包含如下方法:Matrix(rows, cols):创建一个rows×cols的矩阵,并将其内所有数值初始化为0;numRows():返回矩阵的行数;numCols():返回矩阵的列数;getitem(row, col):返回row行col列的数值;setitem(row, col, scalar):将row行col列

2016-10-15 10:11:52 765

原创 python数据结构学习笔记-2016-10-14-03-二维数组

2.3 二维数组        二维数组(two-dimensional array):将数据按行和列组织,类似于表格和网格。        2.3.1 二维数组ADT        二维数组ADT包含的方法与一维数组的有些类似:Array2D(nrows, ncols):创建二维数组,行数和列数分别是nrows和ncols,并将所有元素初始化为None;numRows()

2016-10-15 00:21:52 986

原创 python数据结构学习笔记-2016-10-14-02-python列表

2.2 python列表        python列表是一种可变的序列容器。本节主要讲python列表的实现,涉及C语言层面。        2.2.1 创建python列表        如下所示:>>> pyList = [4, 12, 2, 34, 17]        当python列表被创建时,一个数组被创建出来,以储存列表中的元素,并且这一数组的长度是大于列表的长度的。数

2016-10-14 23:35:33 495

原创 python数据结构学习笔记-2016-10-14-01-一维数组

2.1 数组结构        一维数组(one-dimensional array)是多个元素按照一定的顺序,储存在内存的连续的字节当中,并允许对每一个元素的任意访问。        对数组中元素的访问,是通过指针来完成。(类似于数学中的下标)        2.1.1 为什么学习数组        数组与python中列表的区别:数组的相关操作较少,而列表的操作较多

2016-10-14 21:22:05 3850

转载 python 里面的单下划线与双下划线的区别(私有和保护)

Python 用下划线作为变量前缀和后缀指定特殊变量。_xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始。因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”

2016-10-14 16:55:19 333

原创 python数据结构学习笔记-2016-10-09-01-点、线段和多边形ADT

习题1.8和1.9,顺带把点ADT也写一下

2016-10-09 22:33:48 933

原创 python数据结构学习笔记-2016-10-07-01-完善后的mydate.py

这是经过完善后的date.py,重命名为mydate.py。#-*-coding: utf-8-*-# 通过儒略日格式实现公历日期from time import localtimeclass Date(object): # 创建公历日期实例对象 def __init__(self, month=localtime()[1], day=localtime()[2],

2016-10-07 14:22:44 352

原创 python数据结构学习笔记-2016-10-05-04-抽象数据类型(四)

1.5 应用:学生记录         提取学生信息,产生相应的报告。         对于每一个学生,有五部分信息ID,以整数表示;姓名,以字符串表示;年级,以整数代号表示;GPA,以浮点数表示。                  但是我们并不知道,这些学生的信息是怎么储存的,它们可能储存在纯文本文件中,在二进制文件中,甚至是在数据库中。        1.5

2016-10-05 18:23:56 369

原创 python数据结构学习笔记-2016-10-05-03-抽象数据类型(三)

1.3 包(注意与python中的包区分)        本节以包为例子,继续阐述抽象数据类型。        包用于储存数据项的简单容器。具有如下性质访问其中的具体某个数据项;增删数据项;判断一个数据项是否在包内;遍历包内所有数据项。                     1.3.1 包ADT        包这一ADT是用于储存数据项的容器,其中的数据项是可以

2016-10-05 17:29:43 696

原创 python数据结构学习笔记-2016-10-05-02-抽象数据类型(二)

1.2 日期抽象数据类型        本节以日期为例,阐述抽象数据类型。        1.2.1 定义ADTDate(month, day, year):根据给定的公历日期,创建日期实例,公元前的年份以负数表示;day():返回公历日期的某日;month():返回公历日期的某月(数字);year():返回公历日期的某年;monthName():返回公历日期的某月的月份名;d

2016-10-05 12:06:01 651

原创 python数据结构学习笔记-2016-10-05-01-抽象数据类型(一)

python数据结构以Data Structure and Algorithms Using Python为书本。        算法(Algorithm):为在有限时间内解决某个问题的一系列清晰精确的、按顺序执行的指令集。        1.1 简介         数据项(Data items):在计算机中以一系列二进制数字表示。         类型(type):一系列值的集

2016-10-05 00:37:39 2006 1

原创 python核心编程学习笔记-2016-10-01-01-客户端COM编程

23.1#-*-coding: utf-8-*-from time import ctimefrom urllib import urlopenticks = ('YHOO', 'GOOG', 'EBAY', 'AMZN')URL = 'http://quote.yahoo.com/d/quotes.csv?s=%s&f=sl1c1p2' # f=sl1c1p2中的s、l1、c1和

2016-10-01 11:30:34 1214 1

原创 python核心编程学习笔记-2016-09-25-01-python扩展

22.1 引言/动机         22.1.1 什么是扩展         扩展:所有能被整合或导入到其他python脚本的代码,都可以称为扩展。e.g. 纯python、C/C++、Java、C#或Visual Basic.NET都可以         22.1.2 为什么要扩展python添加/额外的(非python)功能性能瓶颈的效率提升——把软件开发过程中的瓶颈

2016-09-25 16:28:51 584

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除