1. 实验目的
考察能否正确理解串的顺序存储结构,以及对顺序串基本操作的掌握程度。
2. 实验介绍
了解串的顺序存储结构和堆存储结构。掌握串的古典的模式匹配算法。掌握数组的地址计算方法。了解稀疏矩阵的两种压缩存储方法的特点和适用范围。了解广义表的结构特点及其存储方法。
3.实验内容
创建名为 ex040501_01.py 的文件,在其中编写一个顺序串的类,该类必须包含顺序串
的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确。
(1)创建顺序串 StringSrc=“Array”和 StringDst=“GeneralizedList”(读者可以
自行确定 StringSrc 和 StringDst 中的字符)。
(2)StringDst 调用复制函数(以 StringSrc 为参数),观察复制结果并验证其正确性。
(3)StringDst 调用比较函数(以 StringSrc 为参数),观察比较结果并验证其正确性。
(4)StringDst 调用连接函数(以 StringSrc 为参数),观察连接结果并验证其正确性。
(5)StringDst 调用获取子串函数,观察截取结果并验证其正确性(读者需提供两个
参数:开始截取的位置,以及要截取的长度)。
(6)StringDst 调用删除子串函数,观察删除结果并验证其正确性(读者需提供两个
参数:删除的起始位置,以及要删除的长度)。
(7)StringDst 调用插入函数(以开始插入的位置为参数),观察插入结果并验证其正
确性。
4. 实验步骤与代码
class StringList:
def __init__(self):
self.Max = 256
self.contant = ''
self.length = 0
def Isempty(self):
if self.length == 0:
return True
else:
return False
def CreateString(self):
StringSH = input('请输入字符串,以回车健结尾(不得超过256个):')
if len(StringSH) > self.Max:
print('输入字符过长,超出部分无法储存')
self.contant = StringSH[:self.Max]
else:
self.contant = StringSH
def Copy(self,a,b):
self.contant = b
a = self.contant
def Compare(self,a,b):
if a == b:
return True
else:
return False
def Concat(self,a):
self.contant += a
def Sub(self,ip,lenth):
if ip > len(self.contant)-1 or ip < 0 or lenth < 1 or (lenth+ip>len(self.contant)):
print('无法获取')
else:
substr = self.contant[ip:ip+lenth]
print('该字段为;',substr)
def Delstr(self,ip,lenth):
if ip > len(self.contant)-1 or ip < 0 or lenth < 1 or (lenth+ip>len(self.contant)):
print('无法获取')
else:
Getstr = self.contant[:ip] + self.contant[ip+lenth:]
print('删除后的字段为:',Getstr)
def Index(self,a,ip):
if ip > len(self.contant)-1 or ip < 0 or (len(a)+ip>len(self.contant)):
print('无法获取')
else:
Strnet = self.contant[:ip] + a + self.contant[ip:]
print('插入',a,'后的字段为:',Strnet)
def Experiment(self):
print('开始初始化')
print('....................')
self.__init__()
print('初始化完成')
print('请构建第一个字符串')
self.CreateString()
StringSrc = self.contant
print('开始初始化')
print('....................')
self.__init__()
print('初始化完成')
print('开始构建第二个字符串')
self.CreateString()
StringDst = self.contant
print('调用复制函数')
self.Copy(StringDst,StringSrc)
StringDst = self.contant
print('StringDst = ',StringDst)
print('StringSrc = ',StringSrc)
print('复制完成')
print('调用连接函数')
self.Concat(StringSrc)
StringDst = self.contant
print('StringDst = ',StringDst)
print('连接完成')
print('调用比较函数')
if self.Compare(StringDst,StringSrc)==True:
print('俩字符串相同')
else:
print('俩字符串不相同')
print('完成比较')
print('开始获取子串.......')
ip =int(input('请输入开始获取的位置:'))
lenth = int(input('请输入想获取的长度:'))
self.Sub(ip-1,lenth)
print('完成子串的获取任务')
print('开始删除子串.......')
ip =int(input('请输入开始删除的位置:'))
lenth = int(input('请输入想删除的长度:'))
self.Delstr(ip-1,lenth)
print('完成删除')
print('开始插入字段....')
ip =int(input('请输入开始插入的位置:'))
self.Index(StringSrc,ip-1)
print('完成插入')
SL = StringList()
SL.Experiment()
5.实验结果