【数据结构与算法_01_线性表】线性表

这篇具有很好参考价值的文章主要介绍了【数据结构与算法_01_线性表】线性表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据结构与算法

线性表

定义

● 线性表
具有相同数据类型**(同类型)**的n个数据元素有限序列
● 三方面
● 定义
逻辑结构
相同数据类型
● 每个数据元素所占的空间相同
● 有限
● 有限个元素
● 序列
● 是有次序的
● 基本操作

操作—基本操作

运算
● 创建线性表【initList(&L)】
● 初始化线性表。构建一个空的线性表,分配内存空间
● 销毁线性表【destroyList(&L)】
● 释放所占内存空间
● 插入操作【listLnsert(&L,i,e)】
● 在L中的第i个位置插入e元素
● 删除操作【listDelete(&L,i,&e)】
● 删除L表中第i个位置的元素并用e返回删除的元素值
● 查找操作
● 按值查找【LocalElem(L,e)】
● 在L表中查找具有给定关键字值元素
● 按位查找【GetElem(L,i)】
● 获取L表中第i个位置元素值
● 其他常用操作
● 表长【Length(L)】
● 返回L表长度,即数据元素个数
● 输出操作【printList(L)】
● 前后顺序,输出L表中所有元素值
● 判空操作【empty(L)】
● 若L为空表,则返回true;反之,则为false
● 物理结构
存储结构
● 顺序表
方式–顺序存储
● 定义
代码层面如何实现?
● 代码:typedef struct{ElemType name; int length;} structName;
逻辑结构上是相邻的,在物理结构上也是位置相邻的存储单元
● 基本操作实现
运算实现
● 静态分配
是通过使用“静态数组”实现的,数据固定长度
● 代码实现

● 缺点
静态分配,大小固定,无法改变。
● 动态分配
“动态分配数组指针”,
● Key
动态申请和释放内存空间
● malloc()&&free()
stdlib.h标准库中的函数
● malloc()
申请内存空间
● 返回指针类型,需强制转换成该类型下的指针
● 其参数需要指明申请多大的连续内存空间
● 代码实现

● 缺点
虽可动态增加数组长度,但系统/时间开销较大,需要复制原有的再增加最后,再删除原有的。
● 数据元素大小
如何得知数据元素的大小?
● sizeof(ElemType)
通过该函数可得到数据元素大小。
● 特点

①随机访问,即O(1)时间内找到第i个元素; ② 存储密度高,每个节点进存储数据元素; ③ 扩容不便。(即使采用动态分配方式,其时间复杂度也较高); ④插入、删除不便,需要移动大量元素。

线性表—注意

● 五注意文章来源地址https://www.toymoban.com/news/detail-514403.html

  • ● 对数据的操作 记忆思路。创销、增删改查
  • ● C语言函数定义
  • ● 实际需求—具体操作 实际开发中,依据实际需求定义其他操作
  • ● 命名可读性
  • ● 引用型参数“&”使用 何时要用?需要将修改的参数结果回传(“带回来”)时

到了这里,关于【数据结构与算法_01_线性表】线性表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法 数据结构分类 数据结构类型介绍 数据结构线性非线性结构 算法合集 (一)

     数据结构分为:                            a.线性结构                            b.非线性结构  a.线性结构:                       数据与结构存在一对一的线性关系; a . 线性结构 存储 分为:                                   顺序存储

    2024年02月10日
    浏览(53)
  • 【Python数据结构与算法】线性结构小结

    🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON学习系列专栏 💫\\\"没有罗马,那就自己创造罗马~\\\"   目录 线性数据结构Linear DS 1.栈Stack 栈的两种实现 1.左为栈顶,时间复杂度为O(n) 2.右为栈顶,时间复杂度O(1)   2.队列Queue 3.双端队列Deque 4.列表List 5.链表 a.无序链表的实现 b.有序链表的实

    2024年02月04日
    浏览(41)
  • 数据结构与算法【01】—绪论

    专栏地址:数据结构与算法专栏 开源仓库:bigsai-algorithm仓库 ,欢迎支持 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复),改动会比较大,一直到更新完为止 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有

    2024年02月06日
    浏览(50)
  • 数据结构与算法 - 线性表

    编程要求 本关任务是实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能。具体要求如下: SL_InsAT: 在顺序表的位置i插入结点x,即插入d[i]之前,i的有效范围[0,slist-len]; SL_DelAt:删除顺序表slist的第i号结点, i的有

    2024年02月01日
    浏览(87)
  • Rust 数据结构与算法:2线性数据结构 之 栈

    1、线性数据结构 数组、栈、队列、双端队列、链表这类数据结构都是保存数据的容器,数据项之间的顺序由添加或删除时的顺序决定,数据项一旦被添加,其相对于前后元素就会一直保持位置不变,诸如此类的数据结构被称为线性数据结构。线性数据结构有两端,称为“左

    2024年02月21日
    浏览(47)
  • 数据结构与算法【02】—线性表

    CSDN系列专栏:数据结构与算法专栏 针对以前写的数据结构与算法系列重写(针对文字描述、图片、错误修复),改动会比较大,一直到更新完为止 通过前面数据结构与算法基础知识我们知道了数据结构的一些概念和重要性,那么本章总结下线性表相关的内容。当然,我用自己

    2024年02月05日
    浏览(51)
  • HNU数据结构与算法分析-作业2-线性结构

      1. (简答题) 4.1 假设一个线性表包含下列元素: |2,23,15,5,9 使用Shaffer编写的教材《数据结构与算法分析》的List ADT编写一些C++语句,删除值为15的元素。 (要求:采用C或C++语言描述算法) 4.6 使用Shaffer编写的教材《数据结构与算法分析》的LList类,给LList类的实现添加一个成

    2024年02月05日
    浏览(53)
  • 数据结构--》从线性表说起,掌握常用基础算法

    目录 初识线性表 线性表的基本操作 顺序表的定义 顺序表的基本操作 单链表的定义 单链表的基本操作  双链表的介绍 循环链表的介绍 静态链表的介绍 线性表是具有 相同 数据类型的 n (n0) 个数据元素的 有限序列 ,其中n为 表长 ,当n=0时线性表是一个 空表 。若用L命名线性

    2024年02月09日
    浏览(48)
  • 数据结构与算法-头歌【1】顺序线性表--课上练

      本意是整理和复习,理解不深或者有错误的评论区提出即可。 只有第一关的代码里面有结构体的定义,其余我只放了功能函数。 任务描述 本关要求按照完成顺序表数据类型定义,并初始化一个顺序线性表。 编程要求 顺序线性表数据结构定义如下: 本关的编程任务是补全

    2023年04月25日
    浏览(44)
  • 【数据结构与算法】二、线性表的顺序表示【硬核】

    图书表的顺序存储结构类型定义: 在调用函数的过程中,当形参为引用类型时,实参和形参占用了相同的空间 2.4.1 线性表的基本操作: 2.4.2 线性表L的初始化 2.4.3 销毁和清空线性表L 2.4.4 求线性表L的长度以及判断线性表L是否为空 2.4.5 顺序表的取值(根据位置i获取相应位置

    2023年04月26日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包