首页 > 其他分享 >数据结构-绪论

数据结构-绪论

时间:2024-09-06 16:20:36浏览次数:6  
标签:存储 顺序 线性表 绪论 元素 有序 数据结构 结构

1.可以用抽象数据类型定义有一个完整的数据类型。

抽象数据类型包括数据对象,数据关系,抽象运算。

数据结构:逻辑结构+数据运算。

2.有序表属于逻辑结构。

有序表是一种逻辑结构,它只描述了数据元素之间的逻辑关系,而与实际的物理存储方式无关。这种逻辑上的有序性意味着表中的元素之间存在某种顺序关系,例如按照数值大小、字母顺序或者日期先后等规则排列。

相比之下,顺序表则是一种物理意义上的存储结构,它的元素一个挨一个地存储在连续的物理空间中,如数组就是一种典型的顺序表。

3.线性表、有序表和顺序表在逻辑结构、存储结构和数据元素排列等方面差异。

  1. 逻辑结构
    • 线性表:线性表是一种逻辑结构,它表示的是一个由相同类型的数据元素组成的序列,元素之间是一对一的关系。
    • 有序表:有序表是线性表的一种特例,它的元素按照递增或递减的方式排列起来。
    • 顺序表:顺序表则是线性表的一种物理存储方式,它的元素在物理上连续存储,如数组就是一种典型的顺序表实现。
  2. 存储结构
    • 线性表:本身不涉及具体的存储结构,可以采用顺序存储或链式存储等方式实现。
    • 有序表:既可以采用顺序存储,也可以采用链式存储,其存储结构取决于实现时的选择。
    • 顺序表:只能采用顺序存储结构,即元素被存储在一段连续的内存地址中。
  3. 数据元素排列
    • 线性表:数据元素没有特定的排列顺序,可以是任意排列。
    • 有序表:数据元素必须以递增或递减的方式有序排列。
    • 顺序表:数据元素的排列无特定要求,与线性表类似,但受限于物理存储结构的连续性。
  4. 操作效率
    • 线性表:抽象概念,不直接涉及具体操作,操作效率取决于具体实现。
    • 有序表:由于元素有序,某些操作(如查找)可以更高效地执行。
    • 顺序表:支持随机存取,访问任何位置的元素时间都是常数级,插入和删除操作可能需要移动大量元素。
  5. 应用场景
    • 线性表:适用于需要简单序列存储的情况。
    • 有序表:适用于需要经常进行有序操作(如二分查找、归并等)的场景。
    • 顺序表:适用于数据规模固定且更偏重读取性能的场景。

4.数据结构三要素:逻辑结构,物理结构,运算。

数据结构中数据的逻辑结构独立于物理结构。

5.对于两种不同的数据结构,逻辑结构或物理结构一定不相同吗?

可能相同。数据的运算也是数据结构的一个方面。

比如二叉树和二叉排序树,二叉排序数可以采用二叉树的逻辑表示和存储方式,前者用于表示层次关系,后者用于排序和查找。虽然他们的运算都有建立数,插入节点,删除节点和查找节点等功能,但对于二叉树和二叉排序数,这些定义的意义不同,以查找为例,二叉树的平均复杂度为O(n),而二叉排序数的平均时间复杂度为O(log2n)。

6.举例说明相同的逻辑结构,同一种运算在不同的存储方式下现实时,其运算效率不同。

线性表既可以用顺序存储方式实现,也可以用链式存储方式实现。

在顺序存储方式下,在线性表中插入和删除元素,平均要移动一半的元素,时间复杂度为O(n);

在链式存储结构下,在线性表中插入和删除的时间复杂度为O(1);

7.一个算法应该是问题求解步骤的描述。

程序等于数据结构➕算法。

算法的五个重要性质:有穷性,确定型,可行性,输入,输出,拥有这五个特性不一定是算法。

8.算法的时间复杂度O(n^2),表示该算法的执行时间与n^2成正比,不是问题规模与n^2成正比,问题规模一直是n。

空间复杂的为O(1),表示该算法所需的辅助空间大小与问题规模n无关。

标签:存储,顺序,线性表,绪论,元素,有序,数据结构,结构
From: https://blog.csdn.net/m0_74098553/article/details/141960615

相关文章

  • 数据结构练习题(java版)考前必备!
    今天我们刷一些栈队列的题目,大家还是先看题,后看题解。1.155.最小栈-力扣(LeetCode)思路:创建两个栈,一个栈所有元素都算,另一个栈只放小的元素,第二个栈中如果要放的元素比栈顶的元素小就放,这样我们直接pop第二个栈就能得到最小栈classMinStack{publicStack<Integer>......
  • Java数据结构---Queue
    队列Queue队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。入队列(Enqueue):进行插入操作的一端称为队尾出队列(Dequeue):进行删除操作的一端称为队头队列具有先进先出的特性大家可以简单理解为日常生活中“排队”这一现象。队列的模拟实现简单想一想,因为Lin......
  • 数据结构-栈、队列-相关练习
    数据结构-栈、队列-相关练习1.用队列实现栈2.用栈实现队列3.设计循环队列1.用队列实现栈用队列实现栈题目概述:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。这里只讲大致思路,如下图:互相倒就行了,下面讲个具体......
  • PART1-Oracle关系数据结构-数据完整性
    5.数据完整性5.1.数据完整性简介5.1.1.保证数据完整性的技术5.1.2.完整性约束的优势5.2.完整性约束的类型5.2.1.非空完整性约束5.2.2.唯一性约束5.2.3.主键约束5.2.4.外键约束5.2.5.检查约束5.3.完整性约束状态5.3.1.对已修改和现有数据的检查5.3.2.可延......
  • 一文看懂数据结构7种查询算法
    常见的七种查找算法:​数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构,再回头看算法。1.基本查找​也叫做顺序查找​说明:顺序......
  • 【数据结构】二叉树的链式结构,二叉树的遍历,求节点个数以及高度
    目录1.二叉树链式结构的概念2.二叉树的遍历2.1前序遍历2.2中序遍历2.3后序遍历2.4层序遍历3.二叉树的节点个数以及高度3.1二叉树节点个数3.2 二叉树叶子节点个数3.3二叉树的高度3.4 二叉树第k层节点个数3.5 二叉树查找值为x的节点4. 二叉树的创建和......
  • 浙大数据结构:01-复杂度2 Maximum Subsequence Sum
    数据结构MOOCPTA习题01-复杂度2MaximumSubsequenceSum#include<iostream>usingnamespacestd;constintM=100005;inta[M];intmain(){ intk; cin>>k; intf=1; for(inti=0;i<k;i++) { cin>>a[i]; if(a[i]>=0)//如......
  • JavaScript 中的 数据结构
    数据结构数据结构是计算机存储、组织数据的方式。1.数组数组是最最基本的数据结构,很多语言都内置支持数组。数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就是确定的。2.栈栈是一种遵循后进先出(LIFO)原则的有序集合在栈里,新元素都接近栈顶,旧元素......
  • 【数据结构】快速排序与归并排序的非递归实现
    ......
  • 快速排序(动图详解)(C语言数据结构)
    快速排序:        快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:        任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左......