python数据结构学习之实现线性表的顺序

本文实例为大家分享了python实现线性表顺序的具体代码,供大家参考,具体内容如下

线性表

1.抽象数据类型表示(ADT)

类型名称:线性表
数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,….,an)
操作集:

2.线性表的顺序实现

1.表示方法:
其中100可以自己规定,last代表线性表的长度

# 线性表定义
class Lnode(object):
  def __init__(self,last):
    self.data = [None for i in range(100)]
    self.last = last  # 线性表长度12345

2.建立空的顺序表

# 1.初始化建立空的线性表
def MakeEmpty(num):
  PtrL = Lnode(num)
  return PtrL

# 测试建立空的线性表
s = MakeEmpty(10)
print(s.data[0:s.last])
print(s.last)12345678910

测试结果:

3.按值查找

# 2.查找给定值的位置
def Find(x, L):
  i =0
  while(i <= L.last and L.data[i] != x):
    i+=1
  if(i> L.last):
    return -1
  else:
    return i

# 测试查找函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
  L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("查找元素2")
print("下标为:")
print(Find(2,L))
print("查找元素12")
print("下标为:")
print(Find(12,L)) # 找不到返回-1

测试结果:

4.插入操作

# 3.插入(在第i(0<=i<=n)位置上插入一个值为x的新元素)
def Insert(x,i,L):
  if i<0 or i>L.last:
    print("位置不合理")
    return
  else:
    for j in range(L.last,i-1,-1):
      L.data[j+1] = L.data[j]
    L.data[i] = x
    L.last+=1
  return

# 测试插入函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
  L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("在位序3插入元素6")
Insert(6,3,L)
print(L.data[0:L.last])

测试结果:

5.删除操作

# 4.删除第i(0<=i<=n-1)个位置上的元素
def Delete(i,L):
  if i<0 or i>=L.last:
    print("不存在该元素")
    return
  else:
    for j in range(i,L.last-1):
      L.data[j] = L.data[j+1]
    L.last -=1
    return

# 测试删除函数
num = [0,1,2,3,4,5,6,7,8,9]
L = Lnode(10)
for i in range(10):
  L.data[i] = num[i]
print("建立新的线性表")
print(L.data[0:L.last])
print("删除位序3的元素")
Delete(3,L)
print(L.data[0:L.last])

测试结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python数据结构之线性表的顺序存储结构

    用Python仿照C语言来实现线性表的顺序存储结构,供大家参考,具体内容如下 本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 该篇所涉及到的是线性表的顺序存储结构. 代码: # !/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'MrHero' class Node(object): """ 线性表的存储结构 和 C 语言中的链式存储结构类似 ""&q

  • Python数据结构之栈、队列及二叉树定义与用法浅析

    本文实例讲述了Python数据结构之栈.队列及二叉树定义与用法.分享给大家供大家参考,具体如下: 目前只实现了三种,栈.队列和二叉树,哪天得空继续补吧~ 1. 栈 #栈 class Stack: def __init__(self,size = 16): self.stack = [] self.size = size self.top = -1 def setSize(self, size): self.size = size def isEmpty(self): if self.top ==

  • 详解python的四种内置数据结构

    对于每种编程语言一般都会规定一些容器来保存某些数据,就像java的集合和数组一样python也同样有这样的结构 而对于python他有四个这样的内置容器来存储数据,他们都是python语言的一部分可以直接使用而无需额外的导入 一.列表(list) 列表一种跟java和c中的数据很像的一种数据结构,他都是保存一系列相似,且有序元素的集合,不过不同的是列表中的元素可以不是同一种数据类型,且列表的长度是可变的 可以动态的增加可减少这一点则有点像java中的stringBuilder对象,列表中有一点值

  • Python常见数据结构之栈与队列用法示例

    本文实例讲述了Python常见数据结构之栈与队列用法.分享给大家供大家参考,具体如下: Python常见数据结构之-栈 首先,栈是一种数据结构.具有后进先出特性. #栈的实现 class Stack(): def __init__(self,size): self.stack=[] self.size=size self.top=-1 def push(self,content): if self.Full(): print "Stack is Full" else: self.sta

  • Python数据结构之哈夫曼树定义与使用方法示例

    本文实例讲述了Python数据结构之哈夫曼树定义与使用方法.分享给大家供大家参考,具体如下: HaffMan.py #coding=utf-8 #考虑权值的haff曼树查找效率并非最高,但可以用于编码等使用场景下 class TreeNode: def __init__(self,data): self.data=data self.left=None self.right=None self.parent=None class HaffTree: def __init__(self): sel

  • Python中的函数式编程:不可变的数据结构

    让我们首先考虑正方形和长方形.如果我们认为在接口方面,忽略了实现细节,方块是否是矩形的子类型? 子类型的定义取决于Liskov代换原理.为了成为一个子类型,它必须能够完成超级类型所做的一切. 如何定义矩形的接口? zope.interface import Interface class IRectangleInterface: get_length: """Squares can do that""" get_width: "&quo

  • Python数据结构之图的应用示例

    本文实例讲述了Python数据结构之图的应用.分享给大家供大家参考,具体如下: 一.图的结构 二.代码 # -*- coding:utf-8 -*- #! python3 def searchGraph(graph,start,end): results =[] generatePath(graph,[start],end,results) results.sort(key =lambda x:len(x)) return results def generatePath(graph,path,

  • python数据结构学习之实现线性表的顺序

    本文实例为大家分享了python实现线性表顺序的具体代码,供大家参考,具体内容如下 线性表 1.抽象数据类型表示(ADT) 类型名称:线性表 数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,-.,an) 操作集: 2.线性表的顺序实现 1.表示方法: 其中100可以自己规定,last代表线性表的长度 # 线性表定义 class Lnode(object): def __init__(self,last): self.data = [None for i in range(100

  • Python数据结构与算法之跳表详解

    目录 0. 学习目标 1. 跳表的基本概念 1.1 跳表介绍 1.2 跳表的性能 1.3 跳表与普通链表的异同 2. 跳表的实现 2.1 跳表结点类 2.2 跳表的初始化 2.3 获取跳表长度 2.4 读取指定位置元素 2.5 查找指定元素 2.6 在跳表中插入新元素 2.7 删除跳表中指定元素 2.8 其它一些有用的操作 3. 跳表应用 3.1 跳表应用示例 0. 学习目标 在诸如单链表.双线链表等普通链表中,查找.插入和删除操作由于必须从头结点遍历链表才能找到相关链表,因此时间复杂度均为O(

  • JS实现线性表的顺序表示方法示例【经典数据结构】

    本文实例讲述了JS实现线性表的顺序表示方法.分享给大家供大家参考,具体如下: 线性表的顺序表示指的是用一组地址连接的存储单元依次存储线性表的数据元素.通常称这种存储结构的线性表为顺序表. 顺序表的特点是以元素在计算机内物理位置相邻来表示数据元素之间的逻辑关系.每一个数据元素的存储位置都和线性表的起始位置相差一个和数据元素在线性表中的位序成正比的常数.也就是说只要确定了存储线性表的起始位置,线性表中的任一元素都可以随机存储,所以说,顺序表是一种随机存取的存储结构. 高级语言中的数组与其相似,所以我

  • C语言编程数据结构线性表之顺序表和链表原理分析

    目录 线性表的定义和特点 线性结构的特点 线性表 顺序存储 顺序表的元素类型定义 顺序表的增删查改 初始化顺序表 扩容顺序表 尾插法增加元素 头插法 任意位置删除 任意位置添加 线性表的链式存储 数据域与指针域 初始化链表 尾插法增加链表结点 头插法添加链表结点 打印链表 任意位置的删除 双向链表 测试双向链表(主函数) 初始化双向链表 头插法插入元素 尾插法插入元素 尾删法删除结点 头删法删除结点 doubly-Linked list.c文件 doubly-Linkedlist.h 线性表的定

  • C语言线性表的顺序表示与实现实例详解

    1.概述 通常来说顺序表是在计算机的内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性数据结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构就是顺序结构. 采用顺序存储结构的线性表简称为" 顺序表".顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤

  • Java线性表的顺序表示及实现

    目录 前言 一.什么是顺序表? 二.顺序表的实现 1. 准备工作 2. 获取顺序表的元素个数 3. 获取顺序表当前的容量 4. 顺序表是否为空 5. 在指定索引位置添加元素 6. 在顺序表末尾添加元素 7. 在顺序表头部添加元素 8. 获取指定索引位置的元素 9. 获取顺序表第一个元素 10. 获取顺序表最后一个元素 11. 修改指定索引位置的元素 12. 判断顺序表中是否包含指定元素 13. 获取顺序表中指定元素的索引 14. 删除指定索引位置的元素 15. 删除并返回顺序表第一个元素 16.

  • C语言的线性表之顺序表你了解吗

    目录 线性表 —— 顺序表 (C语言) 1. 顺序表的储存结构 2. 顺序表的基本操作 2.1 顺序表的插入 2.2 顺序表的查找 2.3 顺序表的删除 总结 线性表 —— 顺序表 (C语言) 概念 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表中的数据元素,这种表示也称做线性表的顺序储存结构或顺序映像.通常,称这种存储结构的线性表为顺序表 (Sequential List) .其特点是,逻辑上相邻的数据元素,其物理次序也是相邻的. 1. 顺序表的储存结构 #include <st

  • C语言线性表中顺序表超详细理解

    目录 一.本章重点 二.线性表 三.顺序表 四.静态顺序表接口实现 4.1顺序表初始化 4.2顺序表打印 4.3顺序表尾插 4.4顺序表尾删 4.5顺序表头插 4.6顺序表头删 4.7顺序表任意位置插入 4.8顺序表任意位置删除 五.动态顺序表接口实现 5.1顺序表的初始化 5.2顺序表打印 5.3顺序表尾插 5.4顺序表尾删 5.5顺序表头插 5.6顺序表头删 5.7顺序表任意位置插入 5.8顺序表任意位置删除 六.在线0j练习 一.移除元素(力扣) 二.合并两个有序数组(力扣) 一.本章重点

  • 详解Python数据结构与算法中的顺序表

    目录 0. 学习目标 1. 线性表的顺序存储结构 1.1 顺序表基本概念 1.2 顺序表的优缺点 1.3 动态顺序表 2. 顺序表的实现 2.1 顺序表的初始化 2.2 获取顺序表长度 2.3 读取指定位置元素 2.4 查找指定元素 2.5 在指定位置插入新元素 2.6 删除指定位置元素 2.7 其它一些有用的操作 3. 顺序表应用 3.1 顺序表应用示例 3.2 利用顺序表基本操作实现复杂操作 0. 学习目标 线性表在计算机中的表示可以采用多种方法,采用不同存储方法的线性表也有着不同的名称和特

  • C语言数据结构线性表教程示例详解

    目录 线性表 顺序表 线性表 数据结构里我们时常看到什么什么表,线性表是最基本.最简单.也是最常用的一种数据结构,其他各种表的万恶之源就是这个线性表,他是个啥其实顾名思义: 一个线性表是n个具有相同特性的数据元素的有限序列.数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部.比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点). 说的这么复杂其实就是

随机推荐