第一章:线性表
本章结构:
1.1 什么是线性表
现在我们有 n ( n > = 0 )个数据:a1 a2 a3 ... an ,把这 n 个元素进行排列就得到了一个线性表:
List = (a1, a2 , a3, ... an ) 提示:线性表是一个有限的序列,即元素的个数必须是有限多个
举几个简单的例子:
LANGUAGE = ( c , c++ , Python , Java , PHP )
ANIMAL = ( 老虎 , 狮子 , 马 , 兔子 )
1.2 什么是顺序表
明白了线性表,让我们一起来看看顺序表是什么。我们把线性表的各项元素依次存储到计算机的一块连续的存储空间中,这就形成了顺序表。简而言之,我们可以把顺序表看做
线性表在计算机中的一种存储方式
比如下图所示:
接下来我们就要开始着手于顺序表的具体操作了:
① 定义一个顺序表
② 初始化顺序表
③ 判断顺序表是否为空(即表中没有任何元素 )或 顺序表是否已满
④ 把顺序表清空
⑤ 获取顺序表的元素个数
⑥ 查找顺序表中的某个元素
⑦ 向顺序表中插入某个元素
⑧ 在顺序表的尾部增添一个元素
⑨ 从顺序表中删除某个元素
1.3 Python代码实现
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 31 17:42:35 2014@author: wangcan
"""
#Python代码
class Seqlist: #定义一个顺序表def __init__(self,maxSize): #初始化顺序表self.maxSize &#61; maxSize #maxSize决定顺序表的长度&#xff0c;即能够存储的最多元素个数self.data &#61; [] #当前顺序表为空self.last &#61; -1 #用于记录当前元素的下标def IsEmpty(self): #判断顺序表是否为空if self.last &#61;&#61; -1:return Trueelse:return Falsedef IsFull(self): #判断表是否已满if self.last &#43; 1 &#61;&#61; self.maxSize:return Trueelse:return Falsedef ClearSeqlist(self): #清空顺序表if not self.IsEmpty():self.data &#61; []self.last &#61; -1def LengthOfSeqlist(self): #返回顺序表的当前元素个数&#xff0c;即当前的长度return self.last &#43; 1def SearchData(self,x): #查找顺序表中的某个元素if self.IsEmpty():print "表为空&#xff01;"return -1for i in xrange(self.last&#43;1):if self.data[i] &#61;&#61; x:return iprint "你所查找的元素不存在"return -1def AppendData(self,x): #在顺序表的尾部增添一个元素if self.last&#43;1 &#61;&#61; self.IsFull():print "表已满&#xff0c;不能增加元素&#xff01;"else:self.data.Append(x)self.last &#43;&#61; 1def InsertToSeqlist(self,index,x): #向顺序表中第i个位置插入元素xif self.IsFull():print "表已满&#xff0c;不能插入&#xff01;"elif index<0 or index>&#61; self.maxSize:print "不合法的插入位置&#xff01;"elif index &#61;&#61; self.last &#43; 1:self.AppendData(x)else:for i in range(self.last,index-1,-1):self.data[i &#43; 1] &#61; self.data[i]self.data[index] &#61; xself.last &#43;&#61; 1def DeleteData(self,x): #从表中删除一个数据xif self.IsEmpty():print "表已空&#xff0c;无法删除元素&#xff01;"else:index &#61; -1for dataItem in self.data:index &#43;&#61; 1if x &#61;&#61; dataItem:breakfor i in range(index,self.last,1):self.data[index&#43;1] &#61; self.data[index]self.last -&#61; 1
1.4 顺序表的应用&#xff08;小试牛刀&#xff09;
大家都知道元素周期表&#xff1a;
前20位元素可以说是我们非常熟悉的了&#xff0c;接下来请使用顺序表来存储前20个化学元素&#xff0c;然后查找碳元素&#xff0c;获取其位置信息&#xff0c;再从表中删除钠元素&#xff0c;硅元素
最后向表中按其应在的位置插入钠元素&#xff0c;钪元素。