1. 实验目的
理解线性表的顺序存储结构,并掌握顺序表基本操作。
2. 实验介绍
理解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构(顺序表)和链式存储结构(链表)。熟练掌握这两类存储结构的描述方法,掌握链表中的头结点、头指针和首元结点的区别及循环链表、双向链表的特点等。掌握顺序表的查找、插入和删除算法,掌握链表的查找、插入和删除算法。能够从时间和空间复杂度的角度比较两种存储结构的不同特点及其适用场合。掌握无序表和有序表的合并算法,了解多项式的加法运算。
3.实验内容
创建一个名为 ex020501_01.py 的文件,在其中编写一个顺序表的类,该类必须包
含顺序表的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确。
(1)初始化一个顺序表 SL。
(2)判断 SL 是否为空。
(3)将元素 2,5,16,55,8 依次存入 SL 中。
(4)输出 SL 中元素的个数。
(5)获取 SL 中元素 5 的位置。
(6)在元素 5 之后插入元素 11。
(7)删除值为 16 的元素。
(8)将 SL 中元素依次输出。
4. 实验步骤与代码
class SequenceList(object):
def __init__(self):
self.SL=[]
def IsEmpty(self):
if (len(self.SL)==0):
print("这个列表为空列表")
else:
print("这个列表不是空列表")
def CreateSequenceList(self):
print("#################################################")
print("请输入数据后按回车键确认,若想结束输入请按“#”。")
print("#################################################")
Element=input("请输入元素:")
while Element!='#':
self.SL.append(int(Element))
Element=input("请输入元素:")
print("SL 中元素的个数为:",len(self.SL))
def FindElement(self):
key=int(input('请输入想要查找的元素值:'))
if key in self.SL:
ipos=self.SL.index(key)
print("查找成功!值为",key,"的元素,位于当前顺序表的第",ipos+1,"个位置。")
else:
print("查找失败!当前顺序表中不存在值为",key,"的元素")
def InsertElement(self):
ipos=int(input("请输入待插入元素的位置:"))
element=int(input("请输入待插入元素的值:"))
self.SL.insert(ipos-1,element)
print("插入元素后,当前顺序表为:\n",self.SL)
def DeleteElement(self):
dpos=int(input("请输入待删除元素的值:"))
print("正在删除元素",dpos,"...")
self.SL.remove(dpos)
print("删除后顺序表为:\n",self.SL)
def DestorySequenceList(self):
print("销毁前顺序表为:",self.SL)
self.__init__()
print("销毁后顺序表为:",self.SL)
SL = SequenceList()
SL.IsEmpty()
SL.CreateSequenceList()
SL.FindElement()
SL.InsertElement()
SL.DeleteElement()
SL.DestorySequenceList()
5.实验结果