python数据结构——基础、顺序表

发布于:2025-04-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

一、思维梳理:

二、学生顺序表:

代码展示:

class Stu:
    def __init__(self,name,age,address):
        self.name = name
        self.age = age
        self.address = address

class SeqList:
    def __init__(self,capacity):
        self.capacity = capacity
        self.size = 0
        self.data = [None] * capacity

    def is_full(self):
        return self.size == self.capacity

    def is_empty(self):
        return self.size == 0

    def add_end(self,student):
        if self.is_full():
            print("顺序表已满")
        else:
            self.data[self.size] = student
            self.size += 1

    def del_end(self):
        if self.is_empty():
            print("顺序表为空")
        else:
            self.size -= 1

    def add_index(self,index,student):
        if self.is_full() or index<0 or index>self.size:
            print("无法添加")
        else:
            i = 0
            while i<self.size-index:
                self.data[self.size-i] = self.data[self.size-i-1]
                i += 1
            self.data[index] = student
            self.size += 1

    def del_index(self,index):
        if self.is_empty() or index<0 or index>=self.size:
            print("无法删除")
        else:
            i = index
            while i<self.size-1:
                self.data[i] = self.data[i+1]
                i += 1
            self.size -= 1

    def change_index(self,index,student):
        if self.is_empty() or index<0 or index>=self.size:
            print("无法修改")
        else:
            self.data[index] = student

    def change_value(self,name,student):
        if self.is_empty() or student.name == name:
            print("无需修改或无法修改")
        else:
            for i in range(self.size):
                if self.data[i].name == name:
                    self.data[i] = student
                    return
            else:
                print("未找到想要修改的数据")

    def find_index(self,name):
        if self.is_empty():
            print("表为空")
        else:
            for i in range(self.size):
                if self.data[i].name == name:
                    return i

    def show(self):
        if self.is_empty():
            print("顺序表为空")
        else:
            for i in range(self.size):
                # student = self.data[i]
                print(f"{i+1}、姓名:{self.data[i].name},年龄:{self.data[i].age},地址:{self.data[i].address}")
            print()

if __name__ == '__main__':
    seqList = SeqList(3)

    student1 = Stu("张三",18,"上海")
    student2 = Stu("李四", 19, "上海")
    student3 = Stu("王五", 20, "上海")
    student4 = Stu("马六",21,"北京")

    seqList.add_end(student1)
    seqList.add_end(student2)
    seqList.add_end(student3)
    print("原顺序表为:")
    seqList.show()
    print("尾删后的顺序表:")
    seqList.del_end()
    seqList.show()
    print("按位置插入的顺序表结果:")
    seqList.add_index(1,student4)
    seqList.show()
    print("按位置删除后的顺序表结果:")
    seqList.del_index(1)
    seqList.show()
    print("按位置改变的顺序表结果:")
    seqList.change_index(0,student3)
    seqList.show()
    print("按姓名改变的顺序表结果:")
    seqList.change_value("王五",student1)
    seqList.show()
    print("按名称查找位置:")
    index = seqList.find_index("张三")
    print(index)


 结果展示:

原顺序表为:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海
3、姓名:王五,年龄:20,地址:上海

尾删后的顺序表:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海

按位置插入的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:马六,年龄:21,地址:北京
3、姓名:李四,年龄:19,地址:上海

按位置删除后的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海

按位置改变的顺序表结果:
1、姓名:王五,年龄:20,地址:上海
2、姓名:李四,年龄:19,地址:上海

按姓名改变的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海

按名称查找位置:
0