数据结构概述<1>

一 数据结构的定义

在严蔚敏老师的《数据结构》一书中,是这么定义数据结构的:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在很多实际问题中,数据元素并非孤立存在,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。根据数据元素之间关系的不同特性,通常分为4类,分别为集合、线性结构、树形结构和图状结构。

二 动态集合

在《算法导论》一书里,将所有的数据结构描述为动态集合。即我们使用所有的这些数据结构,都是为了对集合中的元素进行一些简单或者复杂的操作,比如查找、插入、删除等等,从而能有效地对一些数据进行很好的管理。任何具体的应用通常只需要几种操作就能实现所有想要实现的功能。

(1)查找  即在集合中找到一个特定的元素。

(2)插入  将某一个数据加入到集合中

(3)删除  将某一特定的数据从集合中删除

(4)最小值  查找集合中的最小元素,并且一般会返回指向该元素的指针

(5)最大值  查找集合中的最大元素,并且一般会返回指向该元素的指针

(6)后继  查找集合中比指定元素大的下一个元素,并返回指向该元素的指针。如果该指定元素为最大值,则返回空。

(7)前驱  查找集合中比指定元素小的前一个元素,并返回指向该元素的指针。如果该指定元素为最小值,则返回空。

在实际应用中,通常只需要其中的某几个功能即可。

个人认为,一个算法的好坏往往决定了一个程序的质量,而算法又往往需要通过数据结构来实现,因此,掌握一些常用的数据结构,是十分有必要的。

接下来我会介绍栈、队列、链表、散列表、二叉搜索树、红黑树等。内容主要涉及概念、C语言实现以及一些简单的应用,后面会陆续更新的。

时间: 2024-08-04 23:00:58

数据结构概述<1>的相关文章

数据结构-概述(1)

数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率. 数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关. 通常有下列四类基本的结构: ⑴集合结构.该结构的数据元素间的关系是"属于同一个集合". ⑵线性结构.该结构的数据元素之间存在着一对一的关系. ⑶树型结构.该结构的数据元素之间存在着一对多的关系

[考研系列之数据结构]数据结构概述

1.脑图 2.数据结构 2.1 抽象数据类型 表示法: (D,S,P) D:数据对象 S:D上的关系集 P:对D的基本操作集 ADT格式 ADT 抽象数据类型名{ 数据对象:<数据对象定义> 数据关系:<数据对象的定义> 基本操作:<基本操作的定义> }ADT 抽象数据类型名 基本操作的格式: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结构:<操作结果描述> 2.2 分类 2.2.1 按值的不同特性 原子类型的值是不能分解的,如C中基

数据结构概述&lt;4&gt;队列

队列也是一种比较常用的数据结构,和栈不同的地方在于它是先进先出的,就像我们平时的排队一样. 由于队列和栈非常相似,就不详细讲述概念了,可以参考上一篇博客数据结构概述<3>栈. 和栈一样,在这里直接给出队列的接口(queue.h),以及接口的数组实现(queue1.c)和链表实现(queue2.c).分别如下: //queue.h void queue_init(int); int queue_empty(); void queue_put(int); int queue_get(); //qu

数据结构——概述

本来大一下册的时候学过<数据结构>,只怪自己太无知,除了能够理解基本概念外其他的一无所知,上课也算是在坐飞机吧.无奈,现在大二又来看看,复习复习.不求深入的理解只求把书读薄吧. 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的科学. 基本概念和术语: 数据:是信息的载体,是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合.数据不仅包括整型.实型等数值类型,还包括字符及声音.图像.视频等非数值类型. 数据元素

算法数据结构01 /算法数据结构概述

目录 算法数据结构01 /算法数据结构概述 1. 算法 2. 评判程序优劣的方法 3. 时间复杂度 4. 数据结构 5. python数据结构性能分析 6. 总结 算法数据结构01 /算法数据结构概述 1. 算法 算法概述 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务.一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用. 算法是独立存在的一种解决问题的方法和思想. 对于算法而言,实

数据结构概述&lt;2&gt;链表的基本概念

一 链表的定义 讨论链表之前,先说线性表. 线性表是一种最常用且最简单的数据结构.一个线性表是n个数据元素的有限集合.对于一个非空的线性表,一般存在几个特征:(1)存在唯一的一个被称作"第一个"的数据元素:(2)存在唯一的一个被称为"最后一个"的数据元素:(3)除第一个之外,线性表中的每个数据元素均只有一个前驱:(4)除最后一个之外,集合中每个数据元素均只有一个后继. 最常见的线性表就是数组了.对于数组而言,每个元素的存储空间相邻,其逻辑关系上相邻的两个元素,在物理

数据结构概述

1.基本概念 1)数据(Data) 数据即信息的载体,是能够输入到计算机中并且能被计算机识别.存储和处理的符号总称 2)数据元素(Data Element) 数据元素是数据的基本单位,又称之为记录.一般,数据元素由若干基本项(或称字段.域.属性)组成. 3)数据类型(Data Type) 数据类型是对数据元素取值范围和运算的限定. 4)数据结构(Data Structure) 数据结构是指数据元素和数据元素之间的相互关系.主要包含下面三方面的内容: 逻辑结构:表示数据元素之间的抽象关系(如邻接关

数据结构概述&lt;3&gt;栈

栈是一种重要的数据结构,其实质也是线性表的一种.但是它只支持两种操作:插入和删除.并且,栈的特点是后进先出,也就是说,栈的操作永远在顶部,插入和删除操作只在栈的顶部进行,所以先插入的栈会堆在底下,而后插入的栈会在栈顶,进行删除的时候,是从栈顶开始,所以新插入的元素反而能优先被删除,我们称之为后进先出.而这种插入和删除操作,在栈的用语里,叫做推进(push)和弹出(pop). 举个例子来说,栈的操作有点像一个老师收上来的作业,先交的作业放在下面,后交的作业放在上面,老师在批阅的时候,总是先从上面的

数据结构概述&lt;3&gt;链表的简单应用

今天介绍两个链表的简单应用. 1.约瑟夫问题 假设有N个人决定选出一个领导人,方法如下:所有人排成一个圆圈,按顺序数数,每次数到第M个人出局,此时,他两边的人靠拢重新形成圆圈.问题是找出哪一个人将会是最后剩下的那个人.下列程序依次读入N和M,并给出最终结果. #include <stdlib.h> #include <stdio.h> typedef struct node* link; struct node { int item; link next; }; int main(