TTTaeee 2022-09-18 10:45 采纳率: 75%
浏览 34
已结题

关于Python的数据结构 线性表 !!

#Python数据结构 线性表的操作
#初始化顺序表
def init(self,max):
'''
初始化
:param max:顺序表的最大容量
'''
self.max=max
self.index=0
self.data=[None for _ in range (self.max)]

#按下值查找元素
def getitem(self,index):
'''
获取下标值为index的元素
:param index :下标值
:return :下标值为index的元素
'''
if index < 0 or index >= self.index:
raise IndentationError('index非法')
else:
return self.data[index]

#修改下标值为index的位置的元素
def setitem (self,index,value):
    '''
    修改下标值为index的元素的值
    :param index:下标值
    :param value:待替换的元素
    :return:
    '''
    if index < 0 or index >= self.index:
            raise IndexError('index非法')
    else:
        self.data[index] = value

#判断顺序表是否为空
def empty(self):
    '''
    判断顺序表是否为空
    :return: True or False
    '''
    return self.index is 0


#插入表头元素
def append(self,value):
    '''

    表尾插入元素
    :param value:待插入的元素
    :return:顺序表已满的出口
    '''
    if self.index is self.max:
    
        return
    else:
        self.data[self.index] = value
        self.index +=1


#在顺序表中任意位置插入元素
def insert(self,index,value):
    '''
    在顺序表中任意位置插入元素
    :param index:待插入元素的位置
    :param value:待插入元素的值
    '''
#若index非法,则抛出异常
    if index < 0 or index> self.index:
        raise IndexError('idnex非法')
#若index刚好为顺序表表尾 if index== self.index:
    if index == self.index:
        self.append(value)
# 通过for…in…将下标值为index及其之后的元素向后移动一个位置
    else:
        self.data += [value]
    for i in range(self.index,index,-1):
        self.data[i]=self.data[i-1]
    self.data[index] = value 
    self.index+=1

#删除表尾元素

def pop(self):
    '''
    删除表尾元素
    :return:顺序表为空的出口
    '''
    if self.empty():
        return
    self.index-=1

#删除任意位置的元素
def delete(self,index):
    '''
    顺序表中删除任意位置的元素
    param index:删除下标值为index的元素
    '''
#下标值不合法,抛出异常
    if self.empty() or index >= self.index:
        raise IndexError('index非法')
#下标值合法,通过for循环将index后面的所有元素都向前移动一个位置,从而覆盖index原#本的值
    for i in range(index,self.index):
        self.data[i] = self.data[i+1]
    self.index-=1

#获取顺序表的长度
def length(self):
    '''
    获取顺序表的长度
    :return:当前顺序表中元素的个数
    '''
    return self.index

#遍历顺序表
def traversal(self):
    '''
    遍历顺序表
    '''
    for i in range(self.index):
        print(self.data[i],end=" ")
    print()

这个该怎么调用实现呢?

  • 写回答

1条回答 默认 最新

  • 梦里逆天 2022-09-18 11:28
    关注

    这不是你自己写的吗?而且这不应该是一个类吗?里面还有不少问题,建议仔细检查。

    # Python数据结构 线性表的操作
    # 初始化顺序表
    class SeqList:
        def __init__(self, max):
            """
            初始化
            :param max:顺序表的最大容量
            """
            self.max = max
            self.index = 0
            self.data = [None for _ in range(self.max)]
    
        # 按下值查找元素
        def getitem(self, index):
            """
            获取下标值为index的元素
            :param index :下标值
            :return :下标值为index的元素
            """
            if index < 0 or index >= self.index:
                raise IndentationError('index非法')
            else:
                return self.data[index]
    
        # 修改下标值为index的位置的元素
        def setitem(self, index, value):
            """
            修改下标值为index的元素的值
            :param index:下标值
            :param value:待替换的元素
            :return:
            """
            if index < 0 or index >= self.index:
                raise IndexError('index非法')
            else:
                self.data[index] = value
    
        # 判断顺序表是否为空
        def empty(self):
            """
            判断顺序表是否为空
            :return: True or False
            """
            return len(self) == 0
    
        # 插入表头元素
        def append(self, value):
            """
            表尾插入元素
            :param value:待插入的元素
            :return:顺序表已满的出口
            """
            if self.index is self.max:
    
                return
            else:
                self.data[self.index] = value
                self.index += 1
    
        # 在顺序表中任意位置插入元素
        def insert(self, index, value):
            """
            在顺序表中任意位置插入元素
            :param index:待插入元素的位置
            :param value:待插入元素的值
            """
            # 若index非法,则抛出异常
            if index < 0 or index > self.index:
                raise IndexError('index非法')
            # 若index刚好为顺序表表尾 if index== self.index:
            if index == self.index:
                self.append(value)
            # 通过for…in…将下标值为index及其之后的元素向后移动一个位置
            else:
                self.data += [value]
            for i in range(self.index, index, -1):
                self.data[i] = self.data[i - 1]
            self.data[index] = value
            self.index += 1
    
        # 删除表尾元素
    
        def pop(self):
            """
            删除表尾元素
            :return:顺序表为空的出口
            """
            if self.empty():
                return
            self.index -= 1
    
        # 删除任意位置的元素
        def delete(self, index):
            """
            顺序表中删除任意位置的元素
            param index:删除下标值为index的元素
            """
            # 下标值不合法,抛出异常
            if self.empty() or index >= self.index:
                raise IndexError('index非法')
            # 下标值合法,通过for循环将index后面的所有元素都向前移动一个位置,从而覆盖index原#本的值
            for i in range(index, self.index):
                self.data[i] = self.data[i + 1]
            self.index -= 1
    
        # 获取顺序表的长度
        def length(self):
            """
            获取顺序表的长度
            :return:当前顺序表中元素的个数
            """
            return self.index
    
        # 遍历顺序表
        def traversal(self):
            """
            遍历顺序表
            """
            for i in range(self.index):
                print(self.data[i], end=" ")
            print()
    
    
    if __name__ == '__main__':
        seqlist = SeqList(5)
        seqlist.append(1)
        seqlist.append(2)
        seqlist.traversal()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月10日
  • 已采纳回答 10月2日
  • 修改了问题 9月18日
  • 创建了问题 9月18日

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路