日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构

發布時間:2023/12/13 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文所采用的數據結構模板為 《數據結構教程》C語言版,李春葆、尹為民等著。

改篇所涉及到的是 串 的順序存儲結構。

用Python仿照C語言來實現。

代碼地址:

串 的順序存儲結構:

# !/usr/bin/env python

# -*- coding: utf-8 -*-

__author__ = 'MrHero'

"""

串的順序存儲結構有兩種: 非緊縮格式, 緊縮格式

非緊縮格式: 每個單元只存一個字符

緊縮格式: 每個單元放多個字符

"""

class SqString(object):

def __init__(self, size=0):

self.data = list(None for _ in range(size))

self.max_size = size

self.length = 0

def assign(self, str):

# 將字符串常量賦值為串s, 即生成一個值等于cstr的串

for i, item in enumerate(str):

self.data[i] = item

self.length += 1

def show_str(self):

# 將字符串輸出

if self.length == 0:

raise ValueError("SqString is empty!")

for i, item in enumerate(self.data):

if item is None:

break

else:

print item,

print ""

def copy(self, sqrstr):

# 將該串復制給 sqrstr

if self.length == 0:

sqrstr.length = 0

sqrstr.max_size = self.max_size

sqrstr.data = list(None for _ in range(self.max_size))

else:

sqrstr.length = self.length

sqrstr.max_size = self.max_size

sqrstr.data = list(None for _ in range(self.max_size))

for i, item in enumerate(self.data):

sqrstr.data[i] = item

def equal(self, sqstr):

# 判斷串相等: 若兩個串s 與 t 相等返回 True, 否則返回 False

if self.length != sqstr.length:

return False

for i in range(self.length):

if self.data[i] != sqstr.data[i]:

return False

return True

def get_length(self):

return self.length

def concat(self, sqstr):

# 串連接

result = SqString()

result.length = self.length + sqstr.length

result.data = list(None for _ in range(self.max_size + sqstr.max_size))

# 先將自身復制到result中

for i in enumerate(self.data):

result.data[i] = self.data[i]

# 再將sqstr復制到result中

for i in enumerate(sqstr.data):

result.data[self.length + i] = sqstr.data[i]

return result

def sub_str(self, i, j):

# 求字串: 返回串s 中從第 i(1<= i <= self.length) 個字符開始,由連續

# j個字符組成的子串

# 返回新串

if i <= 0 or i > self.length or i + j - 1 > self.length:

raise IndexError("Index error!")

result = SqString(j)

for k, item in enumerate(self.data[i-1:i+j-1]):

result.data[k] = item

result.length += 1

return result

def ins_str(self, i, sqstr):

# 將串 sqstr 插入到 該串的第i 個字符中,即將 sqstr 的第一個字符作為s1的第i個字符,

# 并返回返回產生的新串

if i <= 0 or i > self.length:

raise IndexError("Index is out of range!")

result = SqString(self.max_size + sqstr.max_size)

#將 self.data[0:i-2] 復制到result中

for k, item in enumerate(self.data[0:i-1]):

result.data[k] = item

result.length += 1

#將 sqstr 復制到result中

# len2 = result.length

for k, item2 in enumerate(sqstr.data):

if item2 is not None:

result.data[i - 1 + k] = item2

result.length += 1

else:

break

#將 self.data[i-1:] 復制到result中

# len3 = result.length

for k, item3 in enumerate(self.data[i-1:]):

if item3 is not None:

result.data[i - 1 + sqstr.length + k] = item3

result.length += 1

else:

break

return result

def del_str(self, i, j):

# 從串s 中刪除第 i (1<= i <= self.length) 個字符開始,長度為j的字串

# 并返回產生的新串

# 參數不正確時返回一個空串

if i <= 0 or i > self.length or i + j - 1 > self.length:

raise IndexError("Index is out of range")

result = SqString(self.length - j)

for k, item in enumerate(self.data[0:i]):

result.data[k] = item

result.length += 1

for k, item in enumerate(self.data[i + j - 1:]):

if item is not None:

result.data[i - 1 + k] = item

result.length += 1

else:

break

return result

def rep_str(self, i, j, sqstr):

# 在串self中,將第i(1<= i <= self.length)個字符開始的j個字符構成的子串用串t替換,

# 并返回產生的新串。

# 參數不正確是返回一個空串。

if i <= 0 or i > self.length or i + j - 1 > self.length:

raise IndexError("Index is out of range")

result = SqString(self.length - j + sqstr.length)

for k, item in enumerate(self.data[0:i]):

result.data[k] = item

result.length += 1

for k, item in enumerate(sqstr.data):

if item is not None:

result.data[i - 1 + k] = item

result.length += 1

for k, item in enumerate(self.data[i + j - 1:]):

if item is not None:

result.data[i - 1 + sqstr.length + k] = item

result.length += 1

return result

if __name__ == '__main__':

sqstr = SqString(30)

ss = "abcdefghijklmnopqlstuvwxyz"

sqstr.assign(ss)

sqstr.show_str()

sqtest = SqString()

sqstr.copy(sqtest)

sqtest.show_str()

a = sqstr.equal(sqtest)

print a

result = sqstr.sub_str(3, 5)

result.show_str()

sss = "123"

test1 = SqString(5)

test1.assign(sss)

result2 = sqstr.ins_str(3, test1)

result2.show_str()

result3 = result2.del_str(5, 6)

result3.show_str()

result4 = result3.rep_str(5, 4, test1)

result4.show_str()

文章轉載請注明:

總結

以上是生活随笔為你收集整理的python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。