数据结构

在学习数据结构之前我想先有一个大体的概念,所以在网上查了一些资料记录如下

常见的数据结构

1.线性结构
2.树形结构
3.图形结构
4.集合

一、线性结构(线性结构是一个有序数据元素的集合)

常用的线性结构有:线性表,栈,队列,双队列,串。
关于广义表、数组,是一种非线性的数据结构。
常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图

特征:
1.集合中必存在唯一的一个"第一个元素";
2.集合中必存在唯一的一个"最后的元素";
3.除最后元素之外,其它数据元素均有唯一的"后继";
4.除第一元素之外,其它数据元素均有唯一的"前驱"。
数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
如(a0,a1,a2,…,an),a0为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合。
相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。

栈、队列和线性表:
可采用顺序存储和链式存储的方法进行存储
顺序存储:借助数据元素在存储空间中的相对位置来表示元素之间的逻辑关系
链式存储:借助表示数据元素存储地址的指针表示元素之间的逻辑关系

栈(后进先出或先进后出的线性结构)

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
分为:顺序栈,链栈

队列(先进先出的线性结构)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
分为:顺序队列,循环队列

线性表

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
分为:顺序表,单向链表,双向链表,循环链表,双向循环链表。

二、树形结构(一层次的嵌套结构。 一个树形结构的外层和内层有相似的结构, 所以这种结构多可以递归的表示)

常见树形结构:二叉树,完全二叉树,二叉查找树,平衡二叉树,树,堆,并查集,B树。

二叉树

二叉树是一种递归数据结构,是含有n(n>=0)个结点的有限集合。
二叉树具有以下特点:
二叉树可以是空树;二叉树的每个结点都恰好有两棵子树,其中一个或两个可能为空;二叉树中每个结点的左、右子树的位置不能颠倒,若改变两者的位置,就成为另一棵二叉树

完全二叉树

从根起,自上而下,自左而右,给满二叉树的每个结点从1到n连续编号,如果每个结点都与深度为k的满二叉树中编号从1至n的结点一一对应,则称为完全二叉树

二叉查找树

二叉查找树又称二叉排序树,或者是一课空二叉树,或者是具有如下特征的二叉树:
a、若它的左子树不空,则左子树上所有结点的值均小于根结点的值
b、若它的右子树不空,则右子树上所有结点的值均大于根结点的值
c、它的左、右子树也分别是二叉查找树

平衡二叉树

平衡二叉查找树简称平衡二叉树,平衡二叉树或者是棵空树,或者是具有下列性质的二叉查找树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1

树是含有n(n>=0)个结点的有限集合,在任意一棵非空树种: a、有且仅有一个特定的称为根的结点
b、当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且T1,T2,…,Tm称为根的子树

堆是具有以下特性的完全二叉树,其所有非叶子结点均不大于(或不小于)其左右孩子结点。若堆中所有非叶子结点均不大于其左右孩子结点,则称为小顶堆(小根堆),若堆中所有非叶子结点均不小于其左右孩子结点,则称为大顶堆(大根堆)

并查集

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题

B树

在B-树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,…,Kn查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查找的关键字在Ki与Ki+1之间,Pi为指向子树根节点的指针,此时取指针Pi所指的结点继续查找,直至找到,或指针Pi为空时查找失败。

三、图形结构

图形结构是一种比树形结构更复杂的非线性结构。在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。
分为有向图和无向图

参考资料:百度百科,博客园等

C语言——数据结构(线性,树形,图形结构等)相关推荐

  1. c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...

    数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合? 数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15 ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. Go语言-数据结构-线性表

    目录 1.顺序表-线性表顺序存储结构 1.1顺序表结构体定义 1.2顺序表初始化创建 1.3顺序表查找元素k第一次出现时的下标 1.4顺序表插入元素 1.5顺序表删除元素 1.6最终代码和实现效果 2 ...

  4. C语言数据结构线性表顺序存储结构(插入、删除、获取)

    一.代码 #include<stdio.h> #define MAXSIZE 20 /*存储空间初始分配量*/ #define OK 1 #define ERROR 0//元素数据类型,假 ...

  5. c语言数据结构linklist用法,C语言数据结构-线性链表LinkList

    1. 头结点表示链表中第一个结点的存储位置 2. 最后一个结点的存储位置为空(NULL); #ifndef __LINKLLIST_H__ #define __LINKLLIST_H__ #defin ...

  6. c语言线性表库函数大全,数据结构(C语言版)-线性表习题详解

    <数据结构(C语言版)-线性表习题详解>由会员分享,可在线阅读,更多相关<数据结构(C语言版)-线性表习题详解(23页珍藏版)>请在人人文库网上搜索. 1.数 据 结 构 ,线 ...

  7. 数据结构摧毁线性表用c语言,[简述]数据结构-线性表(c语言实现)

    [简述]数据结构-线性表(c语言实现)second60 20180422 1. 线性表的定义 线性表是具有相同特性的数据元素的一个有限序列. 2. 线性表抽象数据类型描述 ADT  List { 数据 ...

  8. 数据结构(C语言)——线性表(定义,基本操作)

    数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...

  9. 数据结构(四) -- C语言版 -- 线性表的链式存储 - 循环链表

    文章目录 零.读前说明 一.循环链表的概述 二.循环链表的模型 2.1.包含头节点模型 2.2.不包含头节点模型 三.工程结构及简单测试案例 3.1.测试工程的目录结构 3.2.循环链表示例源码 3. ...

  10. 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码

    数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...

最新文章

  1. squid与varnish
  2. JSON 列转行的一小段无用代码
  3. java jdbc 链接pg_Java零基础教程
  4. Django之路由系统
  5. Joint Bilateral Filtering 双边滤波
  6. 以下属于单例模式的优点的是_三、单例模式详解
  7. 机器视觉:工业线阵相机与面阵相机特点分析
  8. python用input输入列表有缺陷_Python 三程三器的那些事
  9. GoldenGate SQL error 1403 mapping 错误解决方案
  10. vc6开发一个抓包软件_开发一个软件多少钱?3种软件开发公司报价
  11. 飞秋2010下载不仅野草是如此
  12. jquery bind button 点击事件
  13. 推荐基础术语--A/B实验及P值
  14. mysql 参考文献_后记amp;参考文献
  15. matlab 三维颜色,Matlab三维视图颜色控制
  16. MOS开关管的选择及原理应用
  17. 莫队算法 (普通莫队、带修莫队、树上莫队)
  18. Pytorch中torch.isfinite()、torch.isinf()、torch.isnan()函数的使用
  19. LVS负载均衡集群概念
  20. idea 启动页图片更新2022.1以及2021

热门文章

  1. 【SpringBoot_ANNOTATIONS】 总集篇
  2. 学习webpack系列之三 ---- (输出管理)
  3. python 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址_[LeetCode] 468. 验证IP地址
  4. C# mysql导入文件报错:The used command is not allowed with this MySQL version
  5. BZOJ3925: [Zjoi2015]地震后的幻想乡
  6. 利用云服务器搭建内网映射服务器
  7. Opera 首个 “重生” 版本亮相:启用全新用户界面
  8. 使用 PDO 方式将 Session 保存到 MySQL 数据中
  9. 深入掌握JMS(五):实战Topic 1
  10. Android学习小Demo(19)利用Loader来实时接收短信