专栏首页程序生活数据结构-顺序表的定义及python实现

数据结构-顺序表的定义及python实现

1 顺序表的定义

  • 线性表 是具有相同数据类型的n个数据元素的有限序列。
  • 顺序表 使用组地址连续的存储单元、依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。顺序表是线性表的顺序存储。 假设线性表L存储的起始位置为LOC(A),sizeof(ElemType)是每个数据元素所占用存储空间的大小,则表L所对应的顺序存储如下图所示:

线性表的顺序存储结构

python实现

 class SeqList(object):

    def __init__(self,size=50):  # 初始化线性表
        # 定义线性表的最大长度为50
        self.max=size
        self.num=0
        self.data=[None]*self.max

    def is_empty(self): # 判断线性表是否为空
        return self.num is 0

    def if_full(self): # 判断线性表是否为满
        return self.num is self.max

    def __getitem__(self, index): # 获取线性表中某一位置的值
        if not isinstance(index,int):
            raise TypeError
        if 0 <= index < self.max:
            return self.data[index]
        else:
            raise IndexError

    def __setitem__(self, index, value): # 修改线性表中某一位置的值
        if not isinstance(index,int):
            raise TypeError
        if 0<=index<self.max:
            self.data[index]=value
        else:
            raise IndexError

    def locate_item(self,value):  # 按值查找第一个等于该值的索引
        for i in range(self.num):
            if self.data[i]==value:
                return i
        return -1

    def count(self):  # 返回线性表中元素的个数
        return self.num

    def append_last(self,value):  # 在表尾插入一个元素
        if self.num>self.max:
            print("list is full")
        else:
            self.data[self.num]=value
            self.num+=1

    def insert(self,index,value):  # 在表中任意位置插入一个元素
        if self.num>=self.max:
            print("list is full")
        if not isinstance(index,int):
            raise TypeError
        if index<0 or index>self.num:
            raise IndexError
        for i in range(self.num,index,-1):
            self.data[i]=self.data[i-1]
        self.data[index]=value
        self.num += 1

    # def insert_by_loc(self,i,value):  # 在线性表的第i个位置插入值value  表头 表中 表尾 都可以
    #     if i < 1 or i > self.num+1:
    #         print("i is not right")
    #     if self.num >= self.max:
    #         print("list is full!")
    #     for j in range(self.num+1,i,-1):
    #         self.data[j]=self.data[j-1]
    #     self.data[i-1]=value
    #     self.num += 1

    def remove(self,index):  # 删除表中某一位置的值
        if isinstance(index,int):
            raise TypeError
        if index < 0 or index >= self.num:
            raise IndexError
        for i in range(index,self.num):
            self.data[i]=self.data[i+1]
        self.num -= 1

    def print_list(self): # 删除线性表
        for i in range(0,self.num):
            print(self.data[i])

    def destroy(self): # 销毁线性表
        self.__init__()



if __name__ == '__main__':
    seqlist=SeqList()
    print(seqlist.is_empty())
    seqlist.append_last(18)
    print(seqlist.__getitem__(0))

买了王道的数据结构与算法,准备用python进行代码实现里面的实例,准备春招

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据结构-栈的定义及python实现

    class Node(object): def __init__(self,value): self.value=value ...

    致Great
  • Leetcode-Easy 543. Diameter of Binary Tree

    543. Diameter of Binary Tree 描述: 求二叉树最长路径长度 ? 思路: 深度优先搜索 代码 # Definit...

    致Great
  • 二叉树的深度

    题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 代码实现 递归实现 # ...

    致Great
  • jenkins python 接口封装

                    self.server = Jenkins(self.url)

    py3study
  • python font的处理

    上面的程序时可以正常运行的,其中被高亮的代码是会出错的地方,课本上的源代码是self.font=pygame.font.Sysfont(None,48),但是编...

    py3study
  • python爬虫教程:批量抓取 QQ 群信息

    本文讲解Python批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、地域、分类、标签、群简介等内容,返回 XLS / CSV / JSON 结果文件。

    python学习教程
  • python class 一点总结

    Python class 总结 细数class中的 __**__ __init__(self, *values) 对象的初始化函数,初始化类的实例时,会调用...

    ke1th
  • tornado学习笔记

    tornado是默认自动开启转义的,大家可以根据需求来选是否转义,但是要知道转义的本意是来防止浏览器意外执行恶意代码的,所以去掉转义的时候需要谨慎选择

    py3study
  • python3 - 文本读音器

    本篇分享的是使用python3制作一个文本读音器,简单点就是把指定的文本文字转语音说出来;做这么个小工具主要是为了方便自己在平时看一些文章眼累的时候,可通过语音...

    py3study
  • PSO算法代码

    用户3577892

扫码关注云+社区

领取腾讯云代金券