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

关于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 使用yolov5-7.0目标检测报错
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备