程序员口中数据结构到底是什么?

2024-01-06 05:08

本文主要是介绍程序员口中数据结构到底是什么?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一  什么是数据结构

 

                           

  对于合格的程序员必须要学习数据结构,那么到底什么是数据结构那,既然提了数据结构,那么就不得不提的算法,程序=数据结构+算法 ,这里的算法是广义的算法,既可以表示常规的算法,例如排序,查找等,另外业务逻辑也可以归为算法。

   对于计算来说,只能识别0,1数字,那么不同0,1的组合组成了数据,数据是信息的符号表示,在计算机的世界里,所有的对象都可以数据化,除了更够表示常规的数据,符号,还可以表示图形,图像,音视频等。

  数据的类型按照目前高级程序设计语言可以分为:基本数据类型和构造数据类型,其中基本数据类型有整数类型,浮点数,字符类型,布尔等 ,构造数据类型包含类,接口等引用类型。

二  数据结构的逻辑结构

  数据的逻辑结构指的是数据之间的逻辑关系,是一种抽象的结构,方便根据不同的数据类型进行程序的设计,根据数据之间的不同的数学特性,数据结构可以分为二种:

  1. 线性结构

 

                                                        

线性结构是最简单的数据类型,数据元素直接具有线性关系,每个元素都有一个前驱元素和一个直接后继元素,第一个元素没有前驱,最后一个元素没有后继,其中线性表,串,队列和栈都是线性结构

 

  1. 非线性结构

                                                                           

  1. 树 : 数据元素之间是具有层次关系的一种非线性结构,树中的元素成为结点,结点的类型分为:根节点,子节点(孩子结点),兄弟结点(同一个层次结点),其中windows文件系统的组织方式,家谱,组织架构,比赛晋级淘汰机制(16进8,8进4,4进2 ,决赛)都是树类型的具体体现,
  2. 图:元素有直接或者间接的关联,每个元素可能会有多个前驱元素和多个直接后继结点,常见的有交通线路图,每一个结点表示地点。

                                      

三  数据结构的物理结构(存储结构)

      数据结构的物理结构是指数据元素在计算机的组织存储形式,逻辑结构是方便人们理解数据的抽象组织结构,与数据的存储无关,数据的物理结构是逻辑结构在内存的实现,完全依赖于硬件。

  数据存储结构的基本结构有两种:

  1. 顺序存储结构

                                   数据域 

         顺序存储结构是使用连续的内存单元依次存放数据元素,元素在内存中的物理存储顺序和他们的逻辑顺序相同,常用的数组就是这种存储结构,这种存储结构对于内存必须是连续的,容易造成内存的浪费,并且极易产生碎片。

  1. 链式存储结构

 

                                    

       链式存储不需要连续的内存空间,因为对于结点来说,不仅记录了具体的元素数据,还有要给指针,指向了下一个元素的存储位置,相对来说对于内从的利用率高,

 

备注: 顺序和链式是两种最基本的数据存储类型,也是最常用的数据结构类型,初次之外,可以利用两种存储结构的组合,还可以实现更复杂的存储类型,例如Hash表等

 

 

这篇关于程序员口中数据结构到底是什么?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/575278

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

Python 内置的一些数据结构

文章目录 1. 列表 (List)2. 元组 (Tuple)3. 字典 (Dictionary)4. 集合 (Set)5. 字符串 (String) Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明: 1. 列表 (List) 列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

【数据结构入门】排序算法之交换排序与归并排序

前言         在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。  一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想 它的基本思想是通过相邻元素的比较和交换,让较大的元素逐渐向右移动,从而将最大的元素移动到最右边。 动画演示: 1.1.2 具体步

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预