浅谈数据结构

来源:互联网 发布:mac系统突然很卡 编辑:程序博客网 时间:2024/04/28 06:44

写在前面

算法前驱课上,老师让回顾一下数据结构和数据库的关系以及经典数据结构的应用识,特此整理


1.编程过程中,数据结构和数据库的作用

1.1数据结构

数据结构,是指一堆具有相同特定关系的数据元素的集合和加诸在其上的一系列操作。
每种数据结构都规定了一种特定的关系,即元素之间的关联性。
每种数据结构都规定了一系列对该数据结构下针对数据元素间关系的特定操作,这些操作具有针对性,特殊性。

1.2数据库

数据库,数据的仓库,是按照特定的格式,以整体的方式持久化存储数据的。在其上附加管理工具后,处理数据将会更加的方便。

1.3二者的区别与联系

相同点:二者都限定了数据的类型(或格式),二者都设定了一些加诸在数据上的操作。不同点:数据库侧重于存储,而且是存储整块的数据项,数据元素宽度更大。数据结构的侧重于逻辑关系,主要是限定元素间的关系和一些针对特定数据的操作。 

2.经典数据结构的应用

2.1线性表

元素之间是一对一的关系,其主要操作就是增删查改

(1)顺序表

数据元素的物理存储是按顺序的,元素间的地址是连续的,可以根据每个元素的下标来随机访问数据。

顺序表在编程的过程中用到的最多,操作的时候比较灵活,常用来查找数据和暂时存储数据。

(2)链表

元素的物理存储是随机的,元素间的联系靠内部的指针来指定,每一个数据元素内部不仅存储数据,而且还存储指向下一个元素的指针。相比于顺序表,其存储效率不高。

线性表常用在存储数据元素个数未定、内部元素的物理地址不连续的情况下。

(3)栈

只能在一端插入和删除的特殊线性表,其特点是先进后出,其功能类似于一个水杯。

栈的应用比较多,如函数调用、大数相加、分隔符匹配、算术表达式求值、汉诺塔问题等等。

(4)队列

只能在一端进行插入,另一端进行删除的线性表,其特点是先进先出,功能可以比作一个管道。

队列的应用也不少,如循环顺序队列、优先级队列等等

(5)串

所谓串,“字符串”也,即字符串在一起作为一个整体,当然串也是线性表的一种,当然也有顺序存储,链式存储两种。

串的应用也不少,多为字符串匹配问题,字符串定位问题,公共子序列问题等等

(6)数组

一些类型相同的数据的组合

数组的应用是最多的,大部分时候是习惯性的采用数组来存储数据,数组的操作太多了,此处不做一一列举。
一些图形学方面的特殊的应用有:矩阵的压缩与还原、稀疏矩阵三元组存储、稀疏矩阵十字链表存储等等


2.2树

是一种特殊的元素间一对多的具有层次的结构,特点是:一个元素可以有多个后继,数据分层等

应用也比较多,如查找常用二叉树或者平衡树、哈夫曼编码、解决问题的最优树、决策树等等。

2.3图

是一种元素间多对多的较为复杂的结构,其节点和边在很多情况下有不同的含义。

其应用也较为广泛,如搜索、遍历、最优化问题、复杂关系分析等等


整理的较为仓促了些,欢迎交流


0 0
原创粉丝点击