今天复习了数据结构,才发现很多概念都不懂,或是没有分清楚。晚上跟MZD讨论的时候,发现我们都对数据结构的某些地方都存在着误解。因此深感弄清概念的重要,至少弄清概念可以应付二级、三级。
数据结构
数据结构是计算机存储、组织数据的方式。
数据元素相互之间的关系称为结构。
有四类基本结构:集合、线性结构、树形结构、网状结构。
集合结构中的数据元素除了同属于一种类型外,别无其它关系。
线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
数据结构中,根据数据元素之间的逻辑关系(逻辑上),可以把数据结构分成线性结构和非线性结构。树形结构和网状结构称为非线性结构。
根据在物理内存上的空间分布(物理上),可以得到两种不同的存储结构:顺序存储结构和链式存储结构。
(——整理自百度百科)
个人浅陋的理解:就是把一堆数据按一定的方式放置。比如拥有一串佛珠,撒落一地就是集合(set),用根绳子把它们窜起来,就是一条链子。
线性表
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。
线性结构的基本特征为:
1.集合中必存在唯一的一个“第一元素”;
2.集合中必存在唯一的一个 “最后元素” ;
3.除最后一个元素之外,均有
唯一的后继(后件);
4.除第一个元素之外,均有 唯一的前驱(前件)。
(——整理自百度百科)
基于以上的特征,所以虽然树(Tree)有唯一的前驱,但是它允许有多个后继,所以树不是线性表。
很多人会把先线性跟连续性联想到一块(包括我自己),所以会认为链表是非线性表。链表在存储空间上虽然不是连续的,但在逻辑关系上它也是一对一的关系。
以上如有不当之处,欢迎指正,谢谢。
今天先到此,tomorrow 继续。
分享到:
相关推荐
本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决方案具有决定性的作用。 **数组**是编程中最基本的数据结构之一,它在...
在编程领域,掌握数据结构和算法是提升编程能力的关键步骤,尤其是在Java这样的高级语言中。本文将深入探讨四种简单的排序算法:插入排序、冒泡排序、选择排序。这些算法虽然在复杂度上不如高级排序算法如快速排序或...
本资料集是基于Java语言的实现,由著名计算机科学家Mark Allen Weiss所著的《数据结构与问题求解——java语言描述》(第三版)的源码。该书通过丰富的实例和深入的理论讲解,帮助读者理解和掌握各种经典的数据结构...
本文将基于《Java数据结构和算法》学习笔记中的“栈和队列”部分进行深入探讨。 栈(Stack)是一种线性数据结构,遵循后进先出(LIFO, Last In First Out)的原则。在栈中,元素的添加(压栈)和移除(弹栈)都是在...
### Java数据结构与算法——学习笔记 #### 一、引言 在计算机科学领域,**数据结构**与**算法**是两个极其重要的概念。数据结构指的是数据的组织方式,而算法则是解决特定问题的一系列步骤。这两者是编程的基础,...
Java作为广泛应用的编程语言,对数据结构和算法的支持尤为关键。本文将深入探讨链表这一重要的线性数据结构,并通过源码分析来理解其工作原理。 链表是一种非连续、非顺序的存储结构,它的每个元素(称为节点)包含...
在本篇《Java数据结构和算法》学习笔记中,我们将深入探讨递归和归并排序。递归是一种强大的编程技术,常用于解决复杂问题,而归并排序则是利用递归实现的一种高效排序算法。 首先,让我们理解什么是递归。递归是...
《LeetCode算法学习笔记——Python、Golang与Java篇》 在编程领域,LeetCode是一个备受推崇的在线平台,它提供了丰富的算法题目,旨在帮助开发者提升编程技能,特别是解决算法问题的能力。本压缩包文件“leetcode...
本文主要围绕算法学习笔记展开,包括基础语法、Java String 常用方法以及动态规划解题套路,特别关注了哈希表的使用和斐波那契数列的动态规划解决方案。 1. 哈希表(unordered_map) 哈希表在C++中以`unordered_map...
在哈工大的《数据结构与算法》以及《软件开发实践》课程中,学生们通常会遇到一系列挑战性的作业和实验,这些任务旨在深化他们对数据结构和编程语言的理解。本资源包提供了一种独特的解决方案——Scheme语言的解法,...
标题和描述中提到的是一份源自字节跳动内部的数据结构刷题学习笔记,这份笔记在GitHub上引起广泛关注,被认为是一份有助于提升编程能力,尤其是对于准备字节跳动面试的程序员极具价值的资源。主要关注点在于各种排序...
随后,笔记转向数组和字符串的处理,这是编写Java程序中经常会使用到的数据结构。方法是Java程序中进行函数调用的基本单元,笔记中强调了方法的三要素,即方法签名、参数列表和返回类型。同时,也介绍了两种常见的...
### Java学习笔记——面向对象与面向过程对比及面向对象特性详解 #### 面向对象基本概念 在Java学习过程中,面向对象是一个重要的概念。它不仅是一种编程思想,也是理解和解决问题的有效方式。面向对象的基本单位...
数据结构是计算机科学中至关重要的基础概念,它们用于有效地组织和管理数据,以便进行高效的存储、检索和操作。本文将深入探讨单链表这一常见数据结构,并与其他数据结构如数组进行对比。 单链表是一种线性数据结构...
7. **排序与查找算法**:排序如快速排序、归并排序、堆排序等,查找如二分查找、哈希查找等,都是数据结构中的关键概念。 8. **哈希表**:通过哈希函数将数据映射到固定大小的数组,实现快速查找。C++标准库中的`...
### Java基础复习笔记09数据结构-哈夫曼树 #### 概述 本文档主要介绍了Java中的数据结构——哈夫曼树(Huffman Tree),并深入探讨了其原理、构造方法以及应用实例。哈夫曼树是一种带权路径长度最短的二叉树,在...
在《数据结构高分笔记》的第八章和第九章中,通常会涵盖一些关键概念和算法,这些对于理解和解决实际编程问题至关重要。 第八章可能主要涉及树形数据结构。树是一种非线性的数据结构,它由节点和边构成,每个节点...
郝斌老师的自学数据结构大纲笔记1为我们提供了一个基础的学习路径。 首先,数据结构的定义包括两个主要方面:个体数据的存储和个体间关系的存储。通过选择适当的数据类型和存储结构,我们可以将现实世界中的复杂...
本文通过对《Java基础复习笔记05数据结构-栈》的解析,详细介绍了栈的基本概念、操作方法以及应用场景,并提供了栈的两种实现方式——顺序实现与链表实现的详细说明。理解这些知识点对于深入学习数据结构与算法至关...