当前位置: 首页 > news >正文

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

一、思维梳理:

二、学生顺序表:

代码展示:

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

相关文章:

  • UE5学习笔记 FPS游戏制作34 触发器切换关卡
  • js坐标的相关属性
  • 表格数据导出为Excel
  • 将 PyTorch Model 用可视化方法浏览 torchview,onxx, netron, summary | 撰写论文 paper
  • 漏洞预警 | Windows 文件资源管理器欺骗漏洞(CVE-2025-24071、CVE-2025-24054)
  • 《SRv6 网络编程:开启IP网络新时代》第2章、第3章:SRv6基本原理和基础协议
  • mybatis里in关键字拼接id问题
  • Java 时间处理:轻松掌握 java.time 包
  • 05-031-自考数据结构(20331)- 哈希表 - 例题分析
  • UE5学习记录part12
  • WebForms 事件
  • stm32第十天外部中断和NVIC讲解
  • 力扣刷题——排序链表
  • Lua语言脚本环境配置
  • 【uboot1】启动流程,环境变量,实例
  • Ubuntu上给AndroidStudio创建桌面图标
  • API 安全之认证鉴权
  • C++的指针数组、数组指针和指针数组指针
  • 怎么安装JSON服务器?JSON服务器最新安装教程
  • JavaScript中的模块化
  • wordpress css sprite/关键词排名优化公司推荐
  • 国内做网站建设知名的公司/网络营销活动策划
  • 泰和网站制作/seo提升排名
  • 自建网站免费/怎么自己做一个网址
  • 白领兼职做网站/免费做网站怎么做网站吗
  • 沈阳微信网站开发/网站排名