首先,说明一下本课程的结构,课程分为三大部分。
第一部分介绍简单的数据结构,包括线性表,栈和队列以及串和数组
第二部分介绍复杂的数据结构,树,堆以及图
第三部分介绍数据的两种基本处理,查找以及排序
简单数据结构
首先,在python中没有所谓的指针结构,因此链表的形式的cpp中有明显不同。
其次,数据结构的学习需要辅助大量代码练习。才能完成。
而且知识一定要掌握到自身感觉可以抓住抓牢。切记似懂非懂的状态。
下面所有的代码部分建议至少自己默写一遍,这些相当于基础知识。
只有基础构建好,心里才有底,未来不会翻来覆去学习这些知识。
线性表
元素之前具有线性关系的线性结构,这里强调的是线性表包含了后面我们所用的链表,栈以及队列。其中线性表也分为顺序表和链式表
顺序表
这些和list操作一致,要记住,顺序表的三个基本操作,插入,删除和查找。
链式表
查找(位序查找,按值查找),插入,删除,创建(头插法,尾插法)。
栈与队列
栈
顺序栈
class SqStack(IStack):
def __init__(self, maxisize = None):
self.maxisize = maxisize
self.StackItem = [None] * self.maxisize
self.top = 0
def clear(self):
'''将栈置空'''
self.top = 0
def isEmpty(self):
'''判断栈是否为空'''
return self.top == 0
def length(self):
'''返回栈的元素个数'''
return self.top
def peak(self):
'''返回栈顶元素'''
if not self.isEmpty():
return self.StackItem[self.top - 1]
else:
return None
def push(self, x):
'''元素x入栈'''
if self.top == self.maxsize:
return Exception["栈已满"]
else:
self.StackItem[self.top] = x
self.top += 1
def pop(self):
'''栈顶元素出栈并返回'''
if self.top == 0
return None
else: