线性结构 订阅
线性结构是一个有序数据元素的集合。 [1]  常用的线性结构有:线性表,栈,队列,双队列,串(一维数组)。关于广义表、数组(高维),是一种非线性的数据结构。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图 展开全文
线性结构是一个有序数据元素的集合。 [1]  常用的线性结构有:线性表,栈,队列,双队列,串(一维数组)。关于广义表、数组(高维),是一种非线性的数据结构。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图
信息
性    质
数据结构
外文名
linear structure
类    型
线性表,栈,队列
释    义
n个数据元素的有序(次序)集合
中文名
线性结构
线性结构分类
数据结构课程中数据的逻辑结构分为线性结构和非线性结构。对于数据结构课程而言,简单地说,线性结构是n个数据元素的有序(次序)集合。
收起全文
精华内容
下载资源
问答
  • 数据结构一 线性结构和非线性结构
    千次阅读
    2020-08-14 12:43:11

    暑假到来,由于自己之前确实数据结构学的一般,因此决定重新学习一下数据结构,一是加深理解,二是对算法使用java进行测验,增强实践能力,主要是通过尚硅谷的视频进行学习,写上去的笔记,有些是尚硅谷的内容,但多数会是自己的理解

    线性结构和非线性结构

    1.数组结构主要分为线性结构和非线性结构
    2.线性结构就是指数据元素之间存在一对一的关系,比如说一般的链表,其前驱和后继元素都是一个,这就是线性结构,而树一个节点可能有多个子节点,这就属于非线性结构
    3.常见的线性结构有数组,队列,链表和栈
    4.非线性结构包括二维数组,多维数组,广义表,树结构,图结构

    更多相关内容
  • 线性结构元素

    2018-04-25 16:51:17
    matlab线性结构体子程序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • 注意:这是武汉理工大学数据结构与算法实验欢乐连连看的非线性结构!!!!!!注意这是非线性的,实验完成了除闯关模式和排行榜以外的所有功能,已经验收通过
  • 线性结构基本常见代码 矩阵转置 特定数据删除 链表去重
  • 上文对数据结构与算法,有了一个简单的概述与介绍,这篇文章,我们介绍一中典型数据结构——线性结构。 什么是线性结构线性结构是最简单、最基本、最常用的数据结构。线性表是线性结构的抽象(Abstract), 线性结构...
  • 第2章 线性表 引言 数据结构分线性结构和非线性结构线性数据结构包括线性表栈队列数组和串非线性结构包括树和图线性结构的特点是在数据元素的非空有限集合中 存在惟一的第一个数据元素 存在惟一的最后一个数据元素 ...
  • 线性结构知识讲解

    2018-07-14 20:41:25
    深度学习中最必不可缺的一个结构时线性结构,这是关于线性结构的知识讲解。
  • 数据结构 线性结构 什么是数据结构? 数据结构( Data structure,用于描述计算机中数 据的存储组织形式合理的数据结构可以给程 序带来更高的存储和运行效率 常用的数据结构有哪些? 线性结构栈队列链表 2.树型结构 3...
  • 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 ...

    线性结构

    1. 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系
    2. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的
    3. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
    4. 线性结构常见的有:数组、队列、链表和栈

    非线性结构 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构

    展开全文
  • 本资源主要是使用matlab软件求解非线性结构的响应,使用的方法是统计线性化。资源包包含代码和教材,可供土木工程领域的学者研究学习,仅供学习参考不可以用于商用。有问题可以私信,有问必答,欢迎你的购买
  • 线性结构和非线性结构

    千次阅读 2021-04-16 15:53:41
    1、线性结构的特点: 线性结构有唯一的首元素(即为第一个元素) 线性结构有唯一的尾元素(即最后一个元素) 除首元素外,所有元素都有唯一的“前驱” 除尾元素外,所有袁旭都有唯一的“后继” 元素存在一对一的...

    1、线性结构的特点:

    1. 线性结构有唯一的首元素(即为第一个元素)
    2. 线性结构有唯一的尾元素(即最后一个元素)
    3. 除首元素外,所有元素都有唯一的“前驱”
    4. 除尾元素外,所有袁旭都有唯一的“后继”
    5. 元素存在一对一的线性关系

    1.1、线性结构的两种存储结构

    1.1.1、顺序存储

    顺序存储的线性表称为顺序表,顺序表存储的元素是具有顺序的,内存中所分配的地址是连续的
    经典代表:数组、队列

    1.1.2、链式存储

    链式存储的线性表称为链表,链表中所存储的数据不一定是连续的,所存储的数据为一个节点,每一个节点分配指针,通过指针指向地址进行关联。也即为元素节点中存放数据元素以及相邻元素的地址信息

    1.1.2.1、链式存储优点:

    可以充分利用碎片内存进行存储。
    经典代表:链表

    1.2、线性结构常见的代表:

    数组、队列、链表、栈

    2、非线性结构的特点:

    非线性结构中各个元素不再保持在一个线性序列中,每个数据元素可能与零个或多个其他数据元素发生联系。

    2.1、非线性结构常见的代表:

    二维数组、多维数组、广义表、树结构、图结构

    展开全文
  • 数据结构之线性结构和非线性结构

    千次阅读 2019-11-15 14:54:26
    一、线性结构 1、线性结构的概念 2、部分实现 (1)顺序表(顺序存储) (2)链表(链式存储) (3)栈 (4)队列 二、非线性结构 1、非线性结构的概念 (1)二叉树 (2)满二叉树 (3)完全...

    目录

    一、线性结构

    1、线性结构的概念

    2、部分实现

        (1)顺序表(顺序存储)

        (2)链表(链式存储)

        (3)栈

        (4)队列

    二、非线性结构

    1、非线性结构的概念

        (1)二叉树

        (2)满二叉树

        (3)完全二叉树

    2、二叉树存储结构

        (1)顺序存储

        (2)链式存储

    3、树与二叉树的转换

        (1)树转二叉树

        (2)二叉树转树

    4、树遍历实现


    一、线性结构

    1、线性结构的概念

    (1) 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。

    (2) 线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的,链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。

    (3) 线性结构中存在两种操作受限的使用场景,即队列和栈。栈的操作只能在线性表的一端进行,就是我们常说的先进后出(FILO),队列的插入操作在线性表的一端进行而其他操作在线性表的另一端进行,先进先出(FIFO),由于线性结构存在两种存储结构,因 此队列和栈各存在两个实现方式。

    2、部分实现

        (1)顺序表(顺序存储)

    按照我们的习惯,存放东西时,一般是找一块空间,然后将需要存放的东西依次摆放,这就是顺序存储。计算机中的顺序存储是指在内存中用一块地址连续的空间依次存放数据元素,用这种方式存储的线性表叫顺序表其特点是表中相邻的数据元素在内存中存储位置也相邻,如下图:

    // 倒置线性表
    public void Reverse()
    {
        T tmp = default(T);
    
        int len = GetLength() - 1;
        for (int i = 0; i <= len / 2; i++)
        {
            if (i.Equals(len - i))
            {
                break;
            }
    
            tmp = data[i];
            data[i] = data[len - i];
            data[len - i] = tmp;
        }
    }

        (2)链表(链式存储)

    假如我们现在要存放一些物品,但是没有足够大的空间将所有的物品一次性放下(电脑中使用链式存储不是因为内存不够先事先说明一下...,具体原因后续会说到),同时设定我们因为脑容量很小,为了节省空间,只能记住一件物品位置。此时我们很机智的找到了解决方案:存放物品时每放置一件物品就在物品上贴一个小纸条,标明下一件物品放在那里,只记住第一件物品的位置,寻找的时候从第一件物品开始寻找,通过小纸条我们可以找到所有的物品,这就是链式存储。链表实现的时候不再像线性表一样只存储数据即可,还有下一个数据元素的地址,因此先定义一个节点类(Node),记录物品信息和下一件物品的位置,我们把物品本身叫做数据域,存储下一件物品地址信息的小纸条称为引用域。链表结构示意图如下:

    寻找物品的时候发现了一个问题,我们从一件物品找下一件物品的时候很容易,但是如果要找上一件物品就得从头开始找,真的很麻烦。为了解决这个问题我们又机智了一把,模仿之前的做法,在存放物品的时候多放置一个小纸条记录上一件物品的位置,这样就可以很快的找到上一件物品了。我们把这种方式我们称为双向链表,前面只放置一张小纸条的方式称为单向链表。

    // 倒置单链表
    public void Reverse()
    {
        Node<T> oldHead = Head;
        Node<T> tmp ;
        Head = null;    //清空链表,解除Head跟oldHead之间的相同引用
    
        while (oldHead != null)
        {
            tmp = Head;
            Head = oldHead;
            //解除Head跟oldHead之间的相同引用
            oldHead = oldHead.Next;
            Head.Next = tmp;
        }
    }

    由于数据存储结构不同导致使用场景上的巨大差异,顺序表由于元素连续具有随机存储的特点,所以查找数据很方便效率很高,但是插入、删除操作为了确保数据元素连续,需要移动大量的数据导致效率很低。而链表由于存储空间不要求连续,插入、删除只需修改相邻元素的引用域地址即可,所以效率很高,但查询需要从头引用开始遍历链表,效率很低。因此,如果只是进行查找操作而不经常插入、删除线性表中的数据元素,则使用顺序存储结构,反之,使用链式存储结构。

        (3)栈

    其实成功完成顺序表和链表之后,栈已经没太多可说的了,主要是逻辑上的不同,毕竟栈也是一种特殊的线性结构。栈是一种操作限定在表尾部进行的线性表,表尾称为栈顶(Top),另一端固定不动,称为栈底(Bottom)。进栈、出栈示意图如下:

     

    //链栈入驻
    public void Push(T item)
    {
        Node<T> tmp = new Node<T>(item);
        if (Top == null)
        {
            Top = tmp;
        }
        else
        {
            tmp.Next = Top;
            Top = tmp;
        }
        Num++;
    }
    
    //顺序栈入栈
    public void Push(T item)
    {
        if (IsFull())
        {
            throw new Exception("Stack is full");
        }
    
        data[++Top] = item;
    }

        (4)队列

    队列与栈类似,仅仅是逻辑有一丢丢不同。队列是一种插入操作限定在表尾其他操作限定在表头的线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队首(Front)。入队、出队示意图如下:

    //链队入队
    public void In(T item)
    {
        Node<T> node = new Node<T>(item);
        if (Rear == null)
        {
            Rear = node;
            Front = Rear;
        }
        else
        {
            Rear.Next = node;
            Rear = Rear.Next;
        }
        ++num;
    }
    
    //循环队列入队
    public void In(T item)
    {
        if (IsFull())
        {
            throw new Exception("Queue is full");
        }
        data[++Rear] = item;
    }

    二、非线性结构

    1、非线性结构的概念

    树作为一种应用广泛的一对多非线性数据结构,不仅有数据间的指向关系,还有层级关系,示例见图一。因树的结构比较复杂,为了简化操作及存储,我们一般将树转换为二叉树处理,因此本文主要讨论二叉树。

        (1)二叉树

    二叉树是每个节点最多拥有两个子节点的树结构,若移除根节点则其余节点会被分成两个互不相交的子树,分别称为左子树和右子树。二叉树是有序树,左右子树有严格的次序,若颠倒则成为一棵不一样的二叉树。

        (2)满二叉树

    满二叉树,顾名思义除叶子节点外所有节点都拥有两个孩子,且叶子节点在同一层的二叉树,示例见图二。

        (3)完全二叉树

    完全二叉树,移除最后一层节点后是满二叉树,且最后一层的节点都连续集中在最左面,示例见图三。

    2、二叉树存储结构

        (1)顺序存储

    根据完全二叉树的特性,可以计算出任意节点n的双亲节点及左右孩子节点的序号,因此完全二叉树的节点可以按照从上到下从左到右的顺序依次存储到一维数组中。非完全二叉树存储时应先将其改造为完全二叉树,以空替代不存在的节点,比较浪费存储空间,存储示意图见图四。

        (2)链式存储

    树结构链式存储类似线性结构链式存储,先定义包含数据域和引用域的节点(Node),然后通过引用域存储节点之间的关系。根据二叉树的结构来看,节点Node至少包含数据域(Data),引用域(左孩子LChild、右孩子RChild),为了方便通过孩子节点查找父节点,引用域中可以考虑添加父节点引用(Parent),存储示意图见图五。

    3、树与二叉树的转换

        (1)树转二叉树

    加线,所有兄弟结点之间加一条连线。

    抹线,对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线。

    整理,整理前两步得到的树,使之结构层次分明。

        (2)二叉树转树

    加线,若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,将该结点与这些右孩子结点用线连接起来。

    抹线,删除原二叉树中所有结点与其右孩子结点的连线。

    整理,整理前两步得到的树,使之结构层次分明。

    4、树遍历实现

    /// <summary>
    /// 先序遍历(DLR)
    /// </summary>
    /// <![CDATA[首先访问跟节点,然后遍历左子树,最后右子树]]>
    static void PreOrder(Node<char> root)
    {
        if (root == null)
        {
            return;
        }
    
        Print(root);
        PreOrder(root.LChild);
        PreOrder(root.RChild);
    }
    
    /// <summary>
    /// 中序遍历(LDR)
    /// </summary>
    /// <![CDATA[先遍历左子树,然后根节点,最后遍历右子树]]>
    static void InOrder(Node<char> root)
    {
        if (root == null)
        {
            return;
        }
    
        InOrder(root.LChild);
        Print(root);
        InOrder(root.RChild);
    }
    
    /// <summary>
    /// 后序遍历(LRD)
    /// </summary>
    /// <![CDATA[先遍历左子树,然后遍历右子树,最后遍历根节点]]>
    static void PostOrder(Node<char> root)
    {
        if (root == null)
        {
            return;
        }
    
        PostOrder(root.LChild);
        PostOrder(root.RChild);
        Print(root);
    }
    
    /// <summary>
    /// 层序遍历
    /// </summary>
    /// <![CDATA[从上向下从左到右]]>
    static void LevelOrder(Node<char> root)
    {
        if (root == null)
        {
            return;
        }
        CSeqQueue<Node<char>> sq = new CSeqQueue<Node<char>>(50);
        sq.In(root);
        while (!sq.IsEmpty())
        {
            Node<char> tmp = sq.Out();
            Print(tmp);
    
            if (tmp.LChild != null)
            {
                sq.In(tmp.LChild);
            }
    
            if (tmp.RChild != null)
            {
                sq.In(tmp.RChild);
            }
        }
    }

     

    展开全文
  • 数据结构包括 :线性结构和非线性结构线性结构 1):线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 2):线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的...
  • 线性结构VS非线性结构

    千次阅读 2021-03-16 10:54:27
    线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 链式...
  • 线性结构和非线性结构的区别

    千次阅读 2020-09-11 11:33:14
    一、线性结构 线性结构最典型的数据关系就是一对一,它是一种有序数据的集合,什么叫有序呢? 比如说一维数组,决定数组块中的数据元素只有一个因素,也就是从左往右或者从右往左的行因素,而不是像二维和多维数组受...
  • 数据结构包括:线性结构和非线性结构 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,...
  • 详解线性结构和非线性结构

    千次阅读 2020-04-15 08:24:40
    一、线性结构 1.线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 2.线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是...
  • 数据结构之线性结构(应用实例)

    千次阅读 2021-02-16 22:07:53
    本文为数据结构之线性结构(应用实例),根据网课而整合的笔记。 栗子: 设计函数分别求两个一元多项式的乘积与和 该题的输入与输出样例: 求解思路 多项式表示 程序框架 读多项式 加法实现 乘法实现 多项式输出...
  • 数据结构包含:线性结构和非线性结构线性结构线性结构是十分常用的数据结构,其特点是数据元素之间存在一对一的线性关系。如:arry[6] = 6 线性结构有两种不同的存储结构,分为:顺序存储结构和链式存储结构...
  • 数据结构:线性结构和非线性结构的理解

    万次阅读 多人点赞 2019-03-02 22:54:09
    我们这里主要说一下线性结构和非线性结构 1. 线性结构 线性结构是什么? 数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。线性结构是一个有序数据元素的集合。 线性结构特点: 线性结构...
  • 什么是线性结构,什么是非线性结构

    万次阅读 多人点赞 2019-06-30 18:16:47
    什么是线性结构,什么是非线性结构线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。 非线性结构,其逻辑特征是一个结点元素可能有多个直接前趋和多个直接后继。常见的...
  • 一、什么是数据结构 1、数据结构的起源 1968年,美国的高纳德教授开设了一门基本算法的课程,开创了数据结构的先河。 数据结构是一门研究数据之间关系和操作的学科,而非是计算方法。 数据结构+算法=程序 沃思凭借这...
  • 数据结构的定义: 一种是数据结构的逻辑层面:数据结构的逻辑结构 ...线性结构–>线性表 栈 队列 串及数组 非线性结构–>树形结构 图形结构 数据的存储结构: 顺序储存 链式存储 索引存储 散列存储 数据...
  • - 线性结构与非线性结构 非空的数据结构要满足两个条件则为线性结构/线性表 ,反之为非线性结构。 有且只有一个根结点。 每个结点最多只有一个前件,也最多只有一个后件。 - 数据结构分为两大类:线性结构、非...
  • 线性结构是一个有序数据元素的集合。 常用的线性结构有:线性表,栈,队列,双队列,数组,串。 非线性结构,数学用语,其逻辑特征是一个结点元素可能有多个直接前驱和多个直接后继。常见的非线性结构有:二维数组,...
  • 线性结构和非线性结构、稀疏数组、队列、链表(LinkedList) 数组和链表.pdf
  • 数据结构之线性结构

    2019-09-03 23:12:36
    常见的线性结构有线性表,栈,队列,双阶列,数组,串(字符串). 数据结构中数据的逻辑结构分为线性结构和非线性结构. 线性结构就是n个数据元素的有序(次序)集合. 线性结构特征: 1)只有一个首结点 2)只有一个尾结点...
  • 将B-H模态综合法推广到材料非线性体系中,采用子结构凝聚法求解非线性动力体系的振动响应,方法简捷,求解体积小,是分析非线性动力问题的一种有效方法.算例表明,该方法运行时间比常规有限元法短,结果可靠.
  • 1.简述线性结构和非线性结构的差别

    千次阅读 2020-02-29 23:25:15
    2.逻辑结构分为线性结构和非线性结构 (1)线性结构是有序的数据元素的集合,存在着一对一的关系。 线性结构:线性表、栈、队列、字符串、数组、广义表。 (2)非线性结构每个元素可能与零个或者多个数据元素有着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 463,748
精华内容 185,499
关键字:

线性结构