2. 数据结构——串(python描述)

参考文献:
[1]张光河.数据结构——python语言描述[M]. 北京:人民邮电出版社,2018,161-185.
[2]

文章目录

  • 1. 串
    • 1.1 串的基本概念
    • 1.2 串的顺序存储及运算
    • 1.3 串的链式存储及运算
    • 1.4 栗子1:串的反转

1. 串

字符串通常被称为串。

  • 顺序存储
  • 链式存储
  • 模式匹配

1.1 串的基本概念

  • 长度:字符个数
  • 空串:string="",长度为0
  • 空格串:stringBlank=" ",仅含一个空格,长度为1
  • 字串:串中任何连续字符组成
  • 主串:包含子串b的串,称为b的主串
  • 真子串:串的所有字串,除了自身以外
  • 字串的位置:子串中第一个字符的位置
  • 串相等:长度和位置相等

串的抽象数据类型

  • a=stringDest , b=stringSrc
操作 说明
InitString(string) 初始化串
StringAssign(stringDest,stringSrc) 将后一个的字符序列赋值给第一个
IsEmptyString(string) 若为空返回true,反之false
StringCopy(a,b) 由B复制得到a
StringCompare(a,b) 若a>b,返回1;等于,0;小于,-1
StringLength(string) 返回string长度
ClearString(string) 清空string,变为空串
StringConcat(a,b) 将b连接到a后面,新的a变为以前的a+b
IndexString(a,b,iPos) 若a,b存在相同的字串,则返回它在a中第iPos 个字符之后第一次出现的结果;否则iPos=-1,并返回-1.
StringDelete(string,iPos,length) 从string第ipos位置,删除指定的length长度的字串
StringInsert(a,ipos,b) 在a的第ipos位置后插入b
StringReplace(a,b,stringtemp) 串a中的b串被stringtemp代替

1.2 串的顺序存储及运算

初始化、是否为空、创建串、串连接、获取子串

## 初始化串
def __init__(self):
	self.MaxStringSize=256
	self.chars=""
	self.length=0

## 判断是否为空
def IsEmpty(self):
	if self.length == 0 :
		IsEmpty=True
	else:
		IsEmpty=False
	return IsEmpty

## 创建串
def CreateString(self):
	stringSH=input("请输入字符串:")
	if len(stringSH)>self.MaxStringSize
		print("溢出,超过的部分无法保存")
		self.chars=stringSH[:self.MaxStringSize]
	else:
		self.chars=stringSH

## 串连接
def StringConcat(self,strSrc):
	lengthSrc=strSrc.length
	stringSrc=strSrc.chars
	if lengthSrc+ len(self.chars)<=self.MaxStringSize:
		self.chars=self.chars+stringSrc
	else:
		print("两个字符的长度之和溢出,超过的部分无法显示")
		size=self.MaxStringSize-len(self.chars)
		self.chars=self.chars+stringSrc[:size]
	print("连接后字符串为:",self.chars)

## 获取字串
def SubString(self,iPos,length):
	if iPos>len(self.chars)-1 or iPos<0 or length<1 \
		or (length+iPos)>len(self.chars) :
		print("无法获取")
	else:
		substr = self.chars[iPos:iPos+length]
		print("获取的字串为:",substr)
	

1.3 串的链式存储及运算

链式存储主要有几个东西,data、next、head、tail、length

## 初始化
def __ init__(self):
	self.data = None
	self.next = None

## 创建一个链串的函数
def  CreateString(self):
	stringSH = input("请输入一个字符串:")
	while self.length < len(stringSH):
			Tstring=StringNode()
			Tstring.data=stringSH[self.length]
			Tstring.tail.next = Tstring
			self.tail = Tstring
			self.length += 1

## 复制串
def
"""
将头和尾对其,然后长度等长
"""
	

1.4 栗子1:串的反转

## 借助第三个转移变量
def reverseStr(st):
    ch = list(st)
    lens = len(ch)
    i=0
    j=lens-1
    while i<j:
        temp = ch[i]
        ch[i] = ch[j]
        ch[j] = temp
        i += 1
        j -= 1
    return ''.join(ch)

st = "abcdefg"
print (reverseStr(st))

## 其实在python转移变量赋值可以不进入第三个变量
def reverseStr(st):
    ch = list(st)
    lens = len(ch)
    i=0
    j=lens-1
    while i<j:
        ch[i],ch[j]=ch[j],ch[i]
        i += 1
        j -= 1
    return ''.join(ch)

st = "abcdefg"
print (reverseStr(st))

## 遍历全部元素,拼接
def reverseStr(st):
    lens = len(st)
    result = ""
    for i in range(lens):
        result = st[i]+result
    return result
  
st = "abcdefg"
print (reverseStr(st))

上述三种结果都是一样的:
2. 数据结构——串(python描述)_第1张图片

你可能感兴趣的:(数据结构)