精华内容
下载资源
问答
  • 2016-09-07 22:49:23

    计算机程序设计 = 数据结构 + 算法
    数据结构研究变量的管理方式,算法研究解决特定问题的方法。
    数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。

    1.1 数据结构的逻辑结构

    逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。
    逻辑结构:
    1、集合结构:这种结构表示数据可以合并成一个整体。
      这是数据之间关系最弱的一种,就仅比那个一点关系都没有的强一点。
    2、线性结构:这种结构中数据之间有一对一的关系(如排队)。
    3、树型结构:这种结构中数据之间有一对多的关系,这个关系称为父子关系(典型的如细胞分裂)。
    4、网状结构:这种结构中数据之间有多对多的交叉映射关系。

    (我们主要研究线性结构和树型结构。)

    1.2 数据结构的物理结构

    物理结构描述计算机内部数据之间实际的关系。
    物理结构:
    1、顺序结构:结构中的数据元素存放在一段连续的内存空间中,典型代表就是数组。随机访问方便,插入删除复杂。
    2、链式结构:这种结构中不同的数据被存储在计算机里不同的地方,他们的物理位置之间完全没有关系。链式结构由多个节点构成,每个节点中包括有效数据和至少一个指针变量。
    对链式结构进行操作时,如果不会修改结构则使用一级指针变量就可以了,如果会修改结构则需要使用二级指针变量,其实,一级指针变量也可以修改链式结构。
    链式结构适合进行插入删除操作,不适合进行随机访问。

    /*链式结构练习*/
    #include <stdio.h>
    
    typedef struct node{
        int num;
        struct node *p_next;//void *p_next;
    }node;
    node node1 = {1,NULL};
    
    int main(){
        node *p_head = NULL;//头指针
        node node2 = {2,NULL};
        static node node3 = {3,NULL};
        node node5 = {5,NULL};//新添一个节点,把它加入链表中
    
        p_head = &node1;
        node1.p_next = &node2;
        node2.p_next = &node3;
        //用二级指针把新增节点5挂上去
        /*node **pp_tmp = &p_head;
        while (*pp_tmp){
            pp_tmp = &((*pp_tmp)->p_next);
        }
        *pp_tmp = &node5;*/
    
        //第二种把新增节点5加进去的方法
        node *p_tmp = NULL;
        if (p_head){
            p_tmp = p_head;
            while (p_tmp->p_next){
                p_tmp = p_tmp->p_next;
            }
            p_tmp->p_next = &node5;
        }
        else {
            p_head = &node5;
        }
       //显示所有节点数据
        p_tmp = p_head;
        while (p_tmp){
            printf("%-3d",p_tmp->num);
            p_tmp = p_tmp->p_next;
        }
        printf("\n");
        return 0;
    }

    逻辑结构可以采用多种物理结构实现,它们之间没有明确的一对一的关系。

    1.3 数据结构的运算结构

    数据结构的基本操作(运算结构):
    1、创建/销毁
      分配资源、建立结构、释放资源
    2、插入/删除
      增加、减少数据元素
    3、获取/修改
      遍历、迭代、随机访问
    (增删改查)
    4、排序/查找
      算法应用

    更多相关内容
  • 数据结构——二叉树先序、中序、后序种遍历二叉树先序、中序、后序种遍历、代码展示: 二叉树先序、中序、后序种遍历 先序遍历:3 2 2 3 8 6 5 4 中序遍历:2 2 3 3 4 5 6 8 后序遍历: 2 3 2 4 5 6 8 3 ...

    一、图示展示:

    (1)先序遍历

    先序遍历可以想象为,一个小人从一棵二叉树根节点为起点,沿着二叉树外沿,逆时针走一圈回到根节点,路上遇到的元素顺序,就是先序遍历的结果

    先序遍历结果为:A B D H I E J C F K G

    在这里插入图片描述
    动画演示:

    记住小人沿着外围跑一圈(直到跑回根节点),多看几次动图便能理解

    在这里插入图片描述
    在这里插入图片描述

    (2)中序遍历

    中序遍历可以看成,二叉树每个节点,垂直方向投影下来(可以理解为每个节点从最左边开始垂直掉到地上),然后从左往右数,得出的结果便是中序遍历的结果

    中遍历结果为:H D I B E J A F K C G
    在这里插入图片描述

    动画展示:

    记住,中序遍历就是从最左边开始,把每个节点垂直投影到同一直线上,然后从左往右读值就可以了,多看几遍动图就理解了

    在这里插入图片描述

    (3)后序遍历

    后序遍历就像是剪葡萄,我们要把一串葡萄剪成一颗一颗的

    还记得我上面提到先序遍历绕圈的路线么?(不记得翻上面理解)

    就是围着树的外围绕一圈,如果发现一剪刀就能剪下的葡萄(必须是一颗葡萄)(也就是葡萄要一个一个掉下来,不能一口气掉超过1个这样),就把它剪下来,组成的就是后序遍历了。

    后序遍历中,根节点默认最后面

    后序遍历结果:H I D J E B K F G C A
    在这里插入图片描述
    动画展示:
    在这里插入图片描述

    (4)层次遍历

    层次遍历很好理解,就是从根节点开始,一层一层,从上到下,每层从左到右,依次写值就可以了

    层次遍历结果:A B C D E F G H I J K

    在这里插入图片描述

    解释外圈跑的意思:

    绕着外围跑一整圈的真正含义是:遍历所有结点时,都先往左孩子走,再往右孩子走。

    (5)口诀

    先序遍历: 先根 再左 再右

    中序遍历: 先左 再根 再右

    后序遍历: 先左 再右 再根

    这里的根,指的是每个分叉子树(左右子树的根节点)根节点,并不只是最开始头顶的根节点,需要灵活思考理解,建议画图理解!!

    二、代码展示:

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Tree{
     
     int data;					//	存放数据域
     struct Tree *lchild;			//	遍历左子树指针
     struct Tree *rchild;			//	遍历右子树指针
     
    }Tree,*BitTree;
    
    BitTree CreateLink()
    {
    	int data;
    	int temp;
    	BitTree T;
    	
    	scanf("%d",&data);		//	输入数据
    	temp=getchar();			//	吸收空格
    	
    	if(data == -1){			//	输入-1 代表此节点下子树不存数据,也就是不继续递归创建
    		
    		return NULL;
    
    	}else{
    		T = (BitTree)malloc(sizeof(Tree));			//		分配内存空间
    		T->data = data;								//		把当前输入的数据存入当前节点指针的数据域中
    		
    		printf("请输入%d的左子树: ",data);		
    		T->lchild = CreateLink();					//		开始递归创建左子树
    		printf("请输入%d的右子树: ",data);			
    		T->rchild = CreateLink();					//		开始到上一级节点的右边递归创建左右子树
    		return T;							//		返回根节点
    	}	
    	
    }
    //	先序遍历
    void ShowXianXu(BitTree T)			//		先序遍历二叉树
    {
    	if(T==NULL)						//	递归中遇到NULL,返回上一层节点
    	{
    		return;
    	}
    	printf("%d ",T->data);
    	ShowXianXu(T->lchild);			//	递归遍历左子树
    	ShowXianXu(T->rchild);			//	递归遍历右子树
    }
    //	中序遍历
    void ShowZhongXu(BitTree T)			//		先序遍历二叉树
    {
    	if(T==NULL)						//	递归中遇到NULL,返回上一层节点
    	{
    		return;
    	}
    	
    	ShowZhongXu(T->lchild);			//	递归遍历左子树
    	printf("%d ",T->data);
    	ShowZhongXu(T->rchild);			//	递归遍历右子树
    	
    }
    //	后序遍历
    void ShowHouXu(BitTree T)			//		后序遍历二叉树
    {
    	if(T==NULL)						//	递归中遇到NULL,返回上一层节点
    	{
    		return;
    	}
    	
    	ShowHouXu(T->lchild);			//	递归遍历左子树
    	ShowHouXu(T->rchild);			//	递归遍历右子树
    	printf("%d ",T->data);
    }
    
    
    int main()
    {
    	BitTree S;
    	printf("请输入第一个节点的数据:\n");
    	S = CreateLink();			//		接受创建二叉树完成的根节点
    	printf("先序遍历结果: \n");
    	ShowXianXu(S);				//		先序遍历二叉树
    
    	printf("\n中序遍历结果: \n");
    	ShowZhongXu(S);				//		中序遍历二叉树
    	
    	printf("\n后序遍历结果: \n");
    	ShowHouXu(S);				//		后序遍历二叉树
    	
    	return 0;	
    } 	
    
    
    展开全文
  • 数据结构——数据结构大结构

    千次阅读 2019-09-02 22:53:14
    数据结构三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。 1.1 数据结构的逻辑结构 逻辑结构指人数据之间关系的理解和看法,逻辑结构和计算机无关。 逻辑结构: 1、 集合结构 ...
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接: https://blog.csdn.net/Robot__Man/article/details/52464253

    计算机程序设计 = 数据结构 + 算法
    数据结构研究变量的管理方式,算法研究解决特定问题的方法。
    数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。

    1.1 数据结构的逻辑结构

    逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。
    逻辑结构:
    1、集合结构:这种结构表示数据可以合并成一个整体。
      这是数据之间关系最弱的一种,就仅比那个一点关系都没有的强一点。
    2、线性结构:这种结构中数据之间有一对一的关系(如排队)。
    3、树型结构:这种结构中数据之间有一对多的关系,这个关系称为父子关系(典型的如细胞分裂)。
    4、网状结构:这种结构中数据之间有多对多的交叉映射关系。

    (我们主要研究线性结构和树型结构。)

    1.2 数据结构的物理结构

    物理结构描述计算机内部数据之间实际的关系。
    物理结构:
    1、顺序结构:结构中的数据元素存放在一段连续的内存空间中,典型代表就是数组。随机访问方便,插入删除复杂。
    2、链式结构:这种结构中不同的数据被存储在计算机里不同的地方,他们的物理位置之间完全没有关系。链式结构由多个节点构成,每个节点中包括有效数据和至少一个指针变量。
    对链式结构进行操作时,如果不会修改结构则使用一级指针变量就可以了,如果会修改结构则需要使用二级指针变量,其实,一级指针变量也可以修改链式结构。
    链式结构适合进行插入删除操作,不适合进行随机访问。

    /*链式结构练习*/
    #include <stdio.h>
    
    typedef struct node{
        int num;
        struct node *p_next;//void *p_next;
    }node;
    node node1 = {1,NULL};
    
    int main(){
        node *p_head = NULL;//头指针
        node node2 = {2,NULL};
        static node node3 = {3,NULL};
        node node5 = {5,NULL};//新添一个节点,把它加入链表中
    
        p_head = &node1;
        node1.p_next = &node2;
        node2.p_next = &node3;
        //用二级指针把新增节点5挂上去
        /*node **pp_tmp = &p_head;
        while (*pp_tmp){
            pp_tmp = &((*pp_tmp)->p_next);
        }
        *pp_tmp = &node5;*/
    
        //第二种把新增节点5加进去的方法
        node *p_tmp = NULL;
        if (p_head){
            p_tmp = p_head;
            while (p_tmp->p_next){
                p_tmp = p_tmp->p_next;
            }
            p_tmp->p_next = &node5;
        }
        else {
            p_head = &node5;
        }
       //显示所有节点数据
        p_tmp = p_head;
        while (p_tmp){
            printf("%-3d",p_tmp->num);
            p_tmp = p_tmp->p_next;
        }
        printf("\n");
        return 0;
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    逻辑结构可以采用多种物理结构实现,它们之间没有明确的一对一的关系。

    1.3 数据结构的运算结构

    数据结构的基本操作(运算结构):
    1、创建/销毁
      分配资源、建立结构、释放资源
    2、插入/删除
      增加、减少数据元素
    3、获取/修改
      遍历、迭代、随机访问
    (增删改查)
    4、排序/查找
      算法应用

    展开全文
  • 种常见的数据结构

    千次阅读 2021-06-11 17:20:56
    数据元素相互之间的关系称为结构。 有四类基本结构:集合、线性...详细一点~~数据结构分为数据的逻辑结构、数据的物理结构、数据的存储结构数据的逻辑结构,指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系...

    数据元素相互之间的关系称为结构。 有四类基本结构:集合、线性结构、树形结构、图状结构; 集合结构:除了同属于一种类型外,别无其它关系 线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可

    数据结构分为哪几种?详细一点~~

    数据结构分为数据的逻辑结构、数据的物理结构、数据的存储结构

    81e39734bf9fbf86c5cdecfa2c934ada.png

    数据的逻辑结构,指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。

    上次看到一本书,上面写到数据结构,我想了解一下什么是数据结构.

    根据数据元素间关系的不同特性,将数据结构常分为下列四类基本的结构: ⑴集合结构。该结构的数据元素间的关系是“属于同一个集合”。 ⑵线性结构。该结构的数据元素之间存在着一对一的关系。 ⑶树型结构。该结构的数据元素之间存在着一对多的关系。

    有三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。概念数据模型主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等;逻辑数据模型

    目前最常用的三种数据模型及其特点是什么?

    目前最常用的三种数据模型为层次模型、网状模型和关系模型。 一、层次模型 层次模型将数据组织成一对多关系的结构,层次结构采用关键字来访问其中每一层次的每一部分。 层次模型发展最早,它以树结构为基本结构,典型代表是IMS模型。

    数据的逻辑结构可以分为线性结构和非线性结构 线性结构可以分为一般线性表,受限线性表,推广线性表; 受限线性表又可以分为栈,队列,串; 推广线性表又可以分为数组和广义表; 非线性结构可以分为集合,树形结构。

    每种数据结构都具备三种基本运算吗

    每种数据结构都具备三种基本运算吗 是哪三种 急 在线等 满意的话加分

    三种基本运算是:插入、删除和查找,但并不是每种都符合。

    数据结构有几种结构类型,分别是什么

    如果指的是逻辑结构,分为4种:集合、线性、树形、图形 如果指的是物理结构(也叫做存储结构)。

    【数据结构】每种结构都具备三个基本运算:插入、【数据结构】每种结构都具备三个基本运算:插入、删除和查找,这种说法一般而言,并不是所有的数据结构都有这三种基本运算 比如多维数组,就没有插入和删除,可以看看,哪怕是二维数组,如果删除其中某个元素,用行还是列来顶替?顶替后,二维数组不就出现缺口了?。 再比如说栈和队列。

    线性表、堆栈、队列这三种数据结构有什么相同和不栈和队列是受限制的线性表 栈是先进后出(一群人走进了死胡同,然后再都出来) 队列是先进先出(跟排队一个道理,先来的先受到服务) 线性表是哪里都可以进行插入和删除

    展开全文
  • 数据结构的三要素是:逻辑结构,物理结构,数据的运算。 逻辑结构: 分为线性结构个非线性结构。 线性结构就是有一一对应的关系的,如A-B-C,这三个字母就符合线性结构。 非线性结构就是集合,树,图。集合就是...
  • 数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。 1)数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在...
  • 数据库的基本结构分为哪三个层次

    千次阅读 2020-12-20 22:50:07
    数据库的基本结构分为哪三个层次 1.物理数据层 2.概念数据层 3.逻辑数据
  • 数据结构是计算机存储、组织数据的方式。一种好的数据结构可以带来更高的运行或者存储效率。数据在内存中是呈线性排列的,但是我们可以使用指针等道具,构造出类似“树形”的复杂结构。下面介绍八常见的数据结构
  • 数据结构与算法必知基础知识

    千次阅读 多人点赞 2021-01-06 22:58:12
    数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低...
  • 关系数据模型——三个组成部分

    千次阅读 2021-09-04 15:17:03
    关系模型的三个组成部分,是指关系数据模型的数据结构、关系数据模型的操作集合和关系数据模型的完整性约束。 关系数据模型的数据结构 主要描述数据的类型、内容、性质以及数据间的联系等,是目标类型的集合。 目标...
  • 数据库的基本结构三个层次

    千次阅读 2019-09-17 18:04:11
    数据库的基本结构三个层次,反映了观察数据库的三种不同角度。  以内模式为框架所组成的数据库叫做物理数据库;以概念模式为框架所组成的数据叫概念数据库;以外模式为框架所组成的数据库叫用户数据库。  ⑴ ...
  • 数据结构:八大常见数据结构

    千次阅读 2019-11-26 14:42:39
    数据结构目录: 一、结构分类 二、区别联系 1. 数组 2. 栈 ...数据结构是指,相互之间存在着一种或多种关系的...数据结构大多是以种分类方式分类,分别是逻辑结构,物理结构,存储结构,一般来讲大多是以逻辑结...
  • 数据结构与算法

    千次阅读 2021-04-27 22:23:16
    1. 数据结构2. 算法3. 数据结构与算法的区别与联系 1. 数据结构   数据结构(Data Structure)是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择...
  • 九大常见数据结构

    千次阅读 2020-10-16 14:44:54
    数据结构想必大家都不会陌生,对于一成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一样...
  • Java常见的8种数据结构

    千次阅读 2022-01-25 14:48:57
    数据结构是指数据在计算机内存空间中或磁盘中的组织形式 算法是完成特定任务的过程 二分法查找 r=2^s s:查找步数 r查找范围 幂函数 s=log2® 已知范围获取需要的次数 对数 算法复杂度使用O(N)函数进行标示 主要是...
  • 数据结构面试常见问题

    千次阅读 2021-01-04 16:00:05
    (1)时间复杂度是算法运行所占用CPU时间多少的量度; (2)空间复杂度是算法在运行过程中临时占用的存储空间的大小的量度。 二、线性表 、栈和队列 四、串、数组和广义表 五、树和二叉树 六、图 1.最...
  • 根据此书所做随笔笔记。 一、绪论 1.1、数据机构的研究内容 ...由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。 1.
  • 数据结构基础概念篇

    万次阅读 多人点赞 2017-11-14 13:44:24
    数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能被计算机处理的...
  • 图解!24张图彻底弄懂九大常见数据结构

    万次阅读 多人点赞 2020-05-24 22:23:36
    数据结构想必大家都不会陌生,对于一成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不...
  • 十本数据结构与算法书籍推荐

    千次阅读 2021-05-20 22:57:29
    学计算机的人是幸福的,因为在这领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。在这里列出一些我看过或者准备看的算法书籍,以供参考。 第一名 原书名:The ...
  • 数据结构课程设计-通讯录管理系统(C语言版)

    万次阅读 多人点赞 2020-12-12 13:48:18
    自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管理系统,你就不难发现,这次数据结构的课设完全就是那...
  • 数据结构名词解释以及简答

    万次阅读 多人点赞 2020-05-20 23:28:52
    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储和数据组织的方式,它分为三个方面,即数据的逻辑结构,数据的物理结构,数据的操作。 数据项:是数据不可分割的最小单位,用它可以...
  • 学习数据数据结构的意义

    千次阅读 2018-12-31 14:09:05
    来源:我是码农,转载请保留出处和链接!...… 相信同学们在刚开始《数据结构》这门课的学习时,心里有着类似前面几问题的这样那样的疑问。希望下面的内容能帮助大家消除疑惑,下定决心坚持学好这门课: ...
  • 数据结构期末考试试题及答案

    千次阅读 2021-08-25 22:53:05
    数据结构期末考试试题及答案 期末样卷参考答案 一.是非题(每题1分共10分 线性表的链式存储结构优于顺序存储结构。F 栈和队列也是线性表。如果需要,可它们中的任一元素进行操作。F 3.字符串是数据对象特定的线性表...
  • 数据结构 第12讲 二叉树的层次遍历

    千次阅读 2017-11-14 11:41:03
    数据结构 第12讲 二叉树的层次遍历 二叉树的遍历一般有先序遍历、中序遍历和后序遍历,这种遍历比较简单。今天我们讲二叉树的另一种遍历方式,层次遍历。即按照层次进行遍历。如图1所示: 图1 ...
  • 数据结构-结构类型

    千次阅读 2018-07-27 21:22:02
    从事计算机,想要深入学习,不得不涉及到数据结构,重拾起大学时代的这门课程,话说也只是刚刚毕业一月,但此时的学习完全靠自觉了。 数据结构是一门讨论“描述现实世界实体的数学模型(非数值计算)及其上的操作...
  • 八种常见数据结构的理解

    万次阅读 2021-11-22 15:55:35
    一切的前提——推导大 O 阶 BigO notation :描述...不信的话,我们来看下这小算法的运行时间与占用内存 我们可以看到第一次计算花了 62ms,到了第十次居然花了 531ms,尽管在现代计算机中几乎可以忽略掉这几百 ms
  • 一件衣服的制作,如果在制作之前没有衣服的袖、领、肩、襟、身等各个部位周密筹划,形成一合理的结构系统,便无法缝制出合体的衣服;还有教育管理系统的结构、通用技术的学科结构、课堂教学结构等。试想一下,...
  • 最近在学习数据结构,有必要自己这两天的学习做一总结,今天就来总结下,数据结构的逻辑结构 按照分类标准的不同,我们把数据结构分为逻辑机构和存储结构,今天主要讲解逻辑结构 逻辑结构:是指数据对象中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 564,128
精华内容 225,651
关键字:

对数据结构的三个层次

数据结构 订阅