数据结构-顺序表的基本操作

用列表来实现 顺序表的基本操作

"""
  用列表来实现 顺序表的基本操作
"""

class seqlist:  # 创建一个顺序表
    def __init__(self, max_space=30):
        self.max_space = max_space  # max_space  最大空间
        self.sl = max_space * [0]  # 申请一个列表数组
        self.length = 0  # 目前实际元素的个数

    """
        #   追加元素 
         1. 在后面追加元素 
    """

    def appenddata(self, data):
        if self.length == self.max_space:
            print("顺序表已经满,不能再添加元素")
        else:
            self.sl[self.length] = data
            self.length = self.length + 1

    def printdata(self):  # 遍历操作
        for i in range(self.length):
            print(self.sl[i])
        print(self.sl[i], end=' ')
        print('\n')

    """
        插入元素的判断 条件 1. 顺序表是否满了 ,2.插入的位置是否合法,合法则插入 
    """

    def insertdata(self, index, data):  # 插入元素的操作  在 index 位置插入 data  元素
        if self.length == self.max_space:
            print("顺序表满了")
        else:
            if index < 0 or index > self.length:
                print("位置不合法")
            else:
                """ 
                    如果合法开始进行元素的移动, 需要考虑到具体的细节的情况 
                """
                #  从最后一个元素进行 移动  陆续的移动通过循环语句进行移动
                i = self.length - 1
                while i >= index:
                    # 最后一个元素赋值给一个新的下标元素
                    self.sl[i + 1] = self.sl[i]
                    i = i - 1
                """ index 位置的元素位置已经空出来,则进行元素的插入"""
                self.sl[index] = data
                self.length = self.length + 1

    """
        顺序表的删除操作
        一. 按照下标或者索引进行元素的删除操作 
        1. 判断列表是否为空  判断删除元素的下标是否合法  
        2. 进行元素的删除操作 ,对删除的元素进行移动 【对后面的元素进行移动操作】
    
    """

    def deleteindex(self, index):  # 按照索引删除元素
        if self.length == 0:
            print('顺序表是空的')

        else:
            if index < 0 or index >= self.length:
                print("位置不合法")
            else:
                i = index
                while i < self.length:
                    self.sl[i] = self.sl[i + 1]
                self.length = self.length - 1

    """
         按值查找元素的操作   
         1. 进行元素遍历操作,把元素和待查找的值进行比较操作 
         2. 查找也分为两种情况, 一种情况是查找到了,进行退出操作,返回元素的下标操作 
         另一种情况是查找到元素的末尾也没有找到 
    """

    def searchdata(self, data):  # 按值来查找元素
        for i in range(self.length):
            if (self.sl[i] == data):  #
                break
        if i == self.length:
            print("没找到这个元素")
            return -1
        else:
            print("找到了")
            return i

    """
        按值进行删除元素的操作 
    """

    def deletedata(self, data):  # 按值删除元素
        i = self.searchdata(data)
        if i != -1:
            self.deleteindex(i)



s = seqlist()
num = int(input("请输入追加元素的个数: "))
for i in range(num):
    data = input("请输入追加的元素: ")
    s.appenddata(data)
s.printdata()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值