精华内容
下载资源
问答
  • 数据的存储结构(物理结构):顺序存储、链接存储(多了指针)、索引存储(多了索引表)、散列存储(散列表)。

    数据的存储结构(物理结构):顺序存储、链接存储(多了指针)、索引存储(多了索引表)、散列存储(散列表)

    存取方式:

     

    随机存取、顺序存取、随机存储和顺序存储这四个概念是完全不一样的,切不可将之混淆

    很多人包括我可能认为随机存取就是随机存储,顺序存取就是顺序存取,其实不是这样。

    下面完整的介绍一下这4个概念

    存取结构:分为随机存取和非随机存取(又称顺序存取)

      1、随机存取就是直接存取,可以通过下标直接访问的那种数据结构,与存储位置无关,例如数组。非随机存取

    就是顺序存取了,不能通过下标访问了,只能按照存储顺序存取,与存储位置有关,例如链表。

      2、顺序存取就是存取第N个数据时,必须先访问前(N-1)个数据 (list),随机存取就是存取第N个数据时,

    不需要访问前(N-1)个数据,直接就可以对第N个数据操作 (array)。

    存储结构:分为顺序存储和随机存储

    1.顺序存储结构

      在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。

    顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,

    结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的储结构为顺序存储结构,通常顺序存储结构是

    借助于计算机程序设计语言(例如c/c++)的数组来描述的。

      顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),

    结点之间的逻辑关系没有占用额外的存储空间。采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,

    由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,

    可能要移动一系列的结点。

      2、随机存储结构

      在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。

      它不要求逻辑上相邻的元素在物理位置上也相邻。因此它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点。

      随机存储最典型的代表为链式存储:

      链式存储结构特点

      1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。

      2、逻辑上相邻的节点物理上不必相邻。

      3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。

      4、查找结点时链式存储要比顺序存储慢。

      5、每个结点是由数据域和指针域组成。

     

     

    展开全文
  • 数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表、链表、栈和队列; 树结构包括普通树,二叉树,线索二叉树等; 图存储结构; 线性表 线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手...

    数据结构大致包含以下几种存储结构:
    线性表,还可细分为顺序表、链表、栈和队列;
    树结构,包括普通树,二叉树,线索二叉树等;
    图存储结构;
    线性表
    线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”关系的数据就可以使用线性表来存储。

    例如,存储类似 {1,3,5,7,9} 这样的数据时,各元素依次排列,每个元素的前面和后边有且仅有一个元素与之相邻(除首元素和尾元素),因此可以使用线性表存储。

    线性表并不是一种具体的存储结构,它包含顺序存储结构和链式存储结构,是顺序表和链表的统称。
    顺序表
    顺序表,简单地理解,就是常用的数组,只是换了个名字而已,例如使用顺序表存储 {1,3,5,7,9},如图 1 所示:

    顺序表结构
    图 1 顺序表结构
    由于顺序表结构的底层实现借助的就是数组,因此对于初学者来说,可以把顺序表完全等价为数组,但实则不是这样。数据结构是研究数据存储方式的一门学科,它囊括的都是各种存储结构,而数组只是各种编程语言中的基本数据类型,并不属于数据结构的范畴。
    在这里插入图顺序表结构片描述
    顺序表结构
    链表
    我们知道,使用顺序表(底层实现靠数组)时,需要提前申请一定大小的存储空间,这块存储空间的物理地址是连续的,如图 1 所示。

    链表则完全不同,使用链表存储数据时,是随用随申请,因此数据的存储位置是相互分离的,换句话说,数据的存储位置是随机的。

    为了给各个数据块建立“依次排列”的关系,链表给各数据块增设一个指针,每个数据块的指针都指向下一个数据块(最后一个数据块的指针指向 NULL),就如同一个个小学生都伸手去拉住下一个小学生的手,这样,看似毫无关系的数据块就建立了“依次排列”的关系,也就形成了链表,如图 2 所示:

    链表结构
    图 2 链表结构
    在这里插入图片描述

    栈和队列
    栈和队列隶属于线性表,是特殊的线性表,因为它们对线性表中元素的进出做了明确的要求。

    栈中的元素只能从线性表的一端进出(另一端封死),且要遵循“先入后出”的原则,即先进栈的元素后出栈。

    栈结构示意图
    图 3 栈结构示意图
    在这里插入图片描述

    栈结构如图 3 所示,像一个木桶,栈中含有 3 个元素,分别是 A、B 和 C,从在栈中的状态可以看出 A 最先进的栈,然后 B 进栈,最后 C 进栈。根据“先进后出”的原则,3 个元素出栈的顺序应该是:C 最先出栈,然后 B 出栈,最后才是 A 出栈。

    队列中的元素只能从线性表的一端进,从另一端出,且要遵循“先入先出”的特点,即先进队列的元素也要先出队列。

    队列结构示意图
    图 4 队列结构示意图

    队列结构如图 4 所示,队列中有 3 个元素,分别是 A、B 和 C,从在队列中的状态可以看出是 A 先进队列,然后 B 进,最后 C 进。根据“先进先出”的原则,3 个元素出队列的顺序应该是 A 最先出队列,然后 B 出,最后 C 出。
    树存储结构
    树存储结构适合存储具有“一对多”关系的数据。

    树存储结构示意图
    图 5 树存储结构示意图
    在这里插入图片描述

    如图 5 所示,其中张平只有一个父亲,但他却有两(多)个孩子,这就是“一对多”的关系,满足这种关系的数据可以使用树存储结构。
    图存储结构
    图存储结构适合存储具有“多对多”关系的数据。

    图存储结构示意图
    图 6 图存储结构示意图

    如图 6 所示,从 V1 可以到达 V2、V3、V4,同样,从 V2、V3、V4 也可以到达 V1,这就是“多对多”的关系,满足这种关系的数据可以使用图存储结构。

    展开全文
  • 1、 物理存储结构 1.1 oracle数据文件 数据文件是保存Oracle数据的操作系统文件。 数据文件由头部、区间(已分配的空间)和空闲空间(未分配的空间)组成。 头部:将数据文件标识为数据库的一部分;存储了数据文件所属的...

    1、 物理存储结构
    1.1 oracle数据文件
    数据文件是保存Oracle数据的操作系统文件。
    数据文件由头部、区间(已分配的空间)和空闲空间(未分配的空间)组成。
    头部:将数据文件标识为数据库的一部分;存储了数据文件所属的表空间和最后执行的检查点等细节。
    每个oracle数据文件都只属于一个表空间,并且由若干操作系统块组成。
    1.2 操作系统块
    操作系统块是文件系统所使用的最小分配单位。
    操作系统块的容量最好与oracle数据块的容量相同。
    2、 逻辑存储结构
    2.1表空间
    表空间类型:SYSTEM类型和非SYSTEM类型
    SYSTEM类型包括SYSTEM和SYSAUX表空间;SYSTEM包含数据字典。
    表空间内容:永久段、临时段和撤销段。
    永久段:表和索引等
    临时段:排序段和临时表数据等
    撤销段:撤销数据
    2.2段
    段是数据库中要求存储的对象。
    视图不是段,因为视图不存储数据。
    查询段类型的方法:
    Select distinct segment_type from dba_segments;
    2.3区间
    区间是为某个段分配的若干临近数据块的集合。
    区间的管理:本地管理和字典管理
    本地管理:位图管理。此管理方式效率更高。
    字典管理:通过区间的分配和解除分配来更新数据字典中的一个表。工作量会很大。
    2.4数据块
    数据块是数据库内I/O最小单位。
    3、 创建与管理表空间
    3.1创建表空间
    Create tablespace demo
    Datafile ‘ORACLEBASE/oradata/demo01dbfsize10m;使reuse3.2Altertablespace3.3Deletetablespacedemoincludingcontentscascadeconstraints;4dbatablespaces,dbadatafiles,dbatempfilesvORACLE_BASE/oradata/demo01_dbf’ size 10m; 这条命令的工作内容:物理创建数据文件;创建表空间;更新控制文件和数据字典;为新的表空间设置默认值。 如果创建表空间时,数据文件存在的话,则使用reuse选项。 3.2修改表空间 Alter tablespace 3.3删除表空间 Delete tablespace demo including contents cascade constraints; 然后手动删除数据文件。 4、 查看表空间的信息 数据字典:dba_tablespaces,dba_data_files,dba_temp_files 动态视图:vtablespace,vdatafile,vdatafile,vtempfile
    查询如下:
    select a.name, b.name, c.name
    from vtablespacea,vtablespace a, vdatafile b, v$tempfile c
    where a.ts#=b.ts# or a.ts#=c.ts#;

    展开全文
  • 还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表。 什么是线性表 线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。即在数据元素的非空有限集中 ...

    还记得数据结构这个经典的分类图吧:


    今天主要关注一下线性表。

    什么是线性表

    线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。即在数据元素的非空有限集中

    (1) 存在唯一的一个被称作“第一个”的数据元素,(2) 存在唯一的一个被称作“最后一个”的数据元素,(3) 除第一个外,集合中的每个数据元素均只有一个前继元素,(4)除最后一个外,集合中的每个数据元素均只有一个后继元素。

    那么对于线性表,从存储结构上分,可以有顺序存储结构和链式存储结构。顺序存储结构包括顺序表、顺序队列和顺序栈;链式存储结构包括链表、链队列和链栈。所有这些分类数据结构的实现,后续的博文将陆续进行介绍。

    顺序表(数组,向量)

    顺序表的结构:

    顺序表的结构如下图所示:

    从结构上可以看出,顺序表实际上就是一个动态数组,在C++的标准模板库(STL)中类似的对应着vector模板类。所以理解顺序表对于使用vector进行高级应用的开发有着极为重要的作用。
    存储结构定义如下:

    typedef struct

    {

      DataType *m_pData;

        int m_nMax,m_nSize;

    }SeqList;

    typedef int DataType;

    顺序表的基本操作及其实现

    有了数据的结构定义,就必须有对应的方法实现从来进行相关的操作,基本的运算函数如下:

    Void SetList(SeqList *L,int n);// 构造函数,建立数组长是n的空表

    Void FreeList(SeqList *L); // 析构函数,释放数组空间


    int ListSize(SeqList *L) // 求表的长度

    int IsEmpty(SeqList *L); // 判断数组是否空,1:,0

    int IfFull(SeqList *L); // 判断数组是否满


    DataType GetData(int pos); // 获取数组某元素

    int Locate(SeqList *L,DataTypeitem); // 判断元素位置

    Void SetData(SeqList *L,DataTypeitem,int pos); //元素位置赋值


    Void Insert(SeqList *L,int pos,DataType item); //在某位置插入元素

    void InsertRear(SeqList *L,DataType&item); // 在末尾插入元素


    void Delete(SeqList *L,int pos);//删除某位置元素

    void ClearList(SeqList *L); // 清表,表中的元素个数是0;

    Void DeleteBetween(SeqList *L,intstart, int end)


    对应某些函数方法的实现如下:

    voidSetList(SeqList *L,int n)

    {

    L->m_pData=newDataType[n];

    if(L->m_pData==NULL)

    {

      cout<<”overflow”<<endl;exit(1);

    }

    L->m_nMax=n;

    L->m_nSize=0;

    }


    Void FreeList(SeqList *L)

    {

    delete [ ]L->m_pData;

    L->m_nSize=0;

    L->m_nMax=0;

    }


    void Insert(SeqList *L,DataType item,int pos)

    {

    //在顺序表中在pos处插入item

      i=1;

      if(L->m_nSize==L->m_nMax){printf(“SeqListis FULL\n”);exit(1)}

      if(pos<=0||pos>L->m_nSize)

      {

      printf(“Pos is out of range”);exit(1);

      }

      for(i=L->m_nSize-1;i>=pos;i--)

      L->m_nData[i+1]=L->m_nData[i];

      L->m_nData[pos]=item;

      L->m_nSize++;

    }


    顺序表的应用:动态字符串

    C语言字符串

    char str[13]=“Hello, world!”;

     char *pStr = str;

    字符串函数

     gets(char *str);

     puts(char *str);

     strcpy(char *str1, char *str2); //字符串拷贝

     strcat(char *str1, char *str2); //字符串连接,str1必须足够大

     strcmp(char *str1, char *str2); //字符串比较

     strlen(char *str); //字符串求长,不包含’\0’的长度


    动态字符串:

    Typedef struct

     {

       int m_nSize;//不含结束符的长度

       char*m_pStr;

     }String;

    基本运算: Concat(), SubString(), Insert(),Delete(),Clear()…

    顺序队列

    一种特殊的线性表:只能在表的一端插入,另一端删除,是先进先出的线性表;头指针(删除位置)和尾指针(插入位置)
    First come, first serve(FIFO)
    优点:循环结构、删除时不需移动元素

    顺序队列的结构:

    顺序队列的结构如下图所示:

    存储结构定义如下:
    typedef struct

    {

      DataType *m_pData;

      int m_nMax;

      int m_nFront,m_nRear, m_nSize;

    }Queue;


    顺序队列的基本操作及其实现

    Void SetQueue(Queue *Q,int n); // 构造函数
    void FreeQueue(Queun *Q); // 析构函数
    int QSize(Queue *Q); // 队列长度
    int QEmpty(Queue *Q); // 判断队列是否空
    int QFull(Queue *Q); // 判断队列是否满
    DataType QGetData(Queue *Q); // 获取数据
    int QInsert(Queue *Q,DataType item); // 进队列
    DataType QDelete(Queue *Q); // 出队列
    void QClear(); // 清空
    队列删除操作:

    DataTypeQDelete(Queue *Q)

    {

      DataType item;

      if(Q->m_nSize==0)

      {

    printf(“队列空\n”);

        Exit(1);

      }

      item=Q->m_pData[Q->m_nFront];

      Q->m_nFront=(Q->m_nFront+1)%Q->m_nMax;

      Q->m_nSize--;

    }

    顺序栈

    一种特殊的线性表:只能在表的一端插入和删除,是后进先出的线性表;进栈和出栈

    顺序栈的结构:


    结构如下图所示:

    Typedef struct

    {

      DataType *m_pData;

      int m_nMax;

      int m_nTop;//插入数据的位置,空为-1,入栈+1,出栈-1

    }Stack;

    顺序栈的基本操作

    顺序栈的基本操作如下:
    CStack()/CStack(int n); // 构造函数
    ~CStack(); // 析构函数
    int SetSize(int n); // 设置栈的大小
    int Free(); // 释放空间
    int Size(); // 栈的大小
    int Empty(); // 判断是否空
    int Full(); // 判断是否满
    int Push(DataType item); // 压栈
    DataType Pop(); // 出栈
    DataType GetPeek(); // 取栈顶元素
    int Clear(); // 清空栈
    顺序栈的基本运算函数声明如下:
    Void SetStack(Stack *S,int n);
    Void FreeStack(Stack *S);
    Int StackEmpty(Stack *S);
    Int StackFull(Stack *S);
    Void Push(Stack *S,DataType item);
    DataType Pop(Stack *S);
    Void ClearStack(Stack *S);
    DataType Peek(Stack *S);

    展开全文
  • 数据结构中的物理结构包含有:顺序存储结构与链式存储结构 存储优缺点: 顺序存储结构在未达到内存限制时,(因为是顺序存储所以查询尾部比较快)在末尾插入比较快,但是在中间插入,需要将当前插入位置的元素及...
  • 算法设计的要求时间效率高存储量低顺序存储结构和链式存储结构的区别链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的;链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储...
  • Oracle存储结构

    千次阅读 2013-11-07 15:56:41
    Oracle存储结构包括:物理存储结构和逻辑存储结构。 1.物理结构是由数据文件(data file)、联机日志文件(online redo log file)、控制文件(control file)组成的,当然他也包括一些其他的文件如归档日志文件、参数...
  • 概念官方一点来说可以使用百度百科的介绍:顺序存储结构存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。 当然不得不说一般...
  • 数据结构 - 顺序存储结构和链式存储结构 顺序存储结构 顺序存储中,相邻数据元素的存放地址也相邻,内存中存储单元的地址必须是连续的,存储密度 = 1。 优点: 不用为表示节点间的逻辑关系而...
  • 线性表之顺序存储结构和链式存储结构

    万次阅读 多人点赞 2018-09-28 14:17:06
    线性表包括顺序表和链表,其中链表又包括单链表、循环链表、双向链表。 顺序存储结构和链式存储结构有所不同,具体区别如下表所示: 通过上面的对比,可以得出一些经验性的结论: 若线性表需要频繁查找,很少...
  • 百度百科:数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。结合今天在复习过程中新的理解,主要总结一下逻辑结构存储结构。 什么是...
  • 存储结构类型

    2017-05-18 22:19:06
    1、数据结构:指所有数据元素以及数据元素之间的关系,其中包括数据元素之间的逻辑关系(数据的逻辑结构)、数据元素及其关系在计算机存储系统中的存储方式(数据的存储结构)、施加在数据上的操作(数据的运算) ...
  • 顺序存储结构: 定义:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,以数据元素为单位,按数据元素在表中的次序存储。 优点: 不用为表示节点间的逻辑关系而增加额外的存储开销。 具有按...
  • 数据库存储结构

    2015-04-27 11:08:18
    存储结构
  • 逻辑结构:数据的逻辑结构是对数据之间关系的描述,与存储结构无关,同一种逻辑结构可以有多多种存储结构。 逻辑结构主要分为两大类:线性存储结构和非线性存储结构 线性存储结构是数据元素有序集合,数据结构之间...
  • Oracle存储结构简介

    千次阅读 2018-01-18 11:12:53
    Oracle存储结构 Oracle存储结构分物理存储结构和逻辑存储结构。 物理存储结构:数据文件、日志文件和控制文件 逻辑存储结构:数据块 -> 区 -> 段 -> 表空间 -> 数据库 Oracle存储结构示意图 Oracle物理...
  • Oracle逻辑存储结构与物理存储结构

    千次阅读 2012-03-07 16:14:11
    Oracle逻辑存储结构包括表空间,各种段,区间,数据块等几种基本结构。 1)表空间是数据库的逻辑划分,每个数据库至少有一个表空间,USER表空间供一般用户使用,RBS表空间供回滚使用,一个表空间只能属于一个数据库。每一...
  • 逻辑结构存储结构

    千次阅读 2019-01-23 12:07:14
    百度百科:数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。结合今天在复习过程中新的理解,主要总结一下逻辑结构存储结构。 什么是...
  • 数据结构 - 逻辑结构存储结构

    万次阅读 2017-10-15 22:18:18
    程序=算法+数据结构 N.沃思(Niklaus Wirth)教授提出:  程序=算法+数据结构  以上公式说明了如下两个问题:  (1)算法决定如何构造和组织数据(算法→数据结构)。  (2)算法的选择依赖于作为基础的...
  • 逻辑存储结构  在操作系统中无法找到逻辑存储结构所对应的文件,但通过查询oracle数据库... 逻辑存储结构包括表空间,段,区,块。简单的说,逻辑存储结构之间的关系是:多个块组成区,多个区组成段,多个段组成表空
  • kafka存储结构

    千次阅读 2018-04-23 11:03:07
    相关概念 topic 主题,特指kafka处理的消息源的不同分类 ...存储结构 topic结构 topic包含多个partition, topic只是逻辑概念,不涉及到存储,partition才是物理概念 同一topic的不同partition可...
  • 数据结构逻辑结构存储结构

    千次阅读 2013-12-24 22:10:00
    存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有 顺序存储,链式存储,索引存储,以及散列存储。其中散列所形成的存储结构叫散列表(又叫哈希表),因此哈希表也是一种存储结构。栈只是一种抽象数据...
  • 包含有整型、实型等数值类型;字符类型(声音、图像、视频等都可以通过编码手段变成字符类型)   数据元素(人):组成数据的、有一定意义的基本单位;   数据项(眼耳鼻姓名地址等):一个数据元素可以由若干个...
  • oracle存储结构是一种层次结构包括表空间、数据段、数据区、数据块。 数据块 data block:由块头、表目录、行目录、空余空间、行数据组成。 数据区 extent:由一组连续的oracle数据块构成,一个或多个数据块组成一...
  • 链式存储结构

    千次阅读 2019-09-20 16:27:14
    线性表的链式存储结构: 为什么采用链式存储结构这种数据结构? –》因为顺序存储结构插入或删除元素时候会涉及大量元素移动,非常影响效率。 因此引入了链式存储结构为了弥补顺序存储结构效率上的问题。 链式存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,425,414
精华内容 570,165
关键字:

存储结构包括