数据结构基础总结

数据的逻辑结构

数据的存储结构

单链表是递归结构

迭代是指从当前元素获得集合中的后继元素。

迭代功能由Tterable可迭代接口和Tterator迭代器接口实现。

栈和队列

是两种特殊的线性表,特殊之处在于插入和删除操作的位置受到限制。

栈:插入和删除只允许在线性表的一端进行,后进先出。

队列:插入和删除分别在线性表的两端进行,先进先出。

数组:

1.数组是随机存取结构,这是数组最大的优点。

2.数组一旦占用一片存储空间,这片存储空间的地址和长度就确定的,不能更改,因此数组只能进行赋值、取值两种随机存取操作,不能进行插入、删除操作。

3.解决数据溢出的办法是,申请一个更大容量的数组并进行数组元素的复制,这样扩充了顺序表等结构的容量。

广义表的特性:

1.线性结构

2.多层次结构,有深度

3.可共享

4.可递归

广义表的操作主要有:

建立一个广义表

判断广义表是否是空表

判断指定数据元素是否为原子

求广义表深度

遍历广义表

插入一个数据元素

删除一个数据元素

二叉树的三种次序遍历

先根次序:ABCDGEFH (中左右)

中根:DGBAECHF(左中右)

后根:GDBEHFCA(左右中)

树的遍历主要有先根遍历和后根遍历两种。

图的遍历一般有两种:深度优先搜索和广度优先搜索。

基于线性表的查找算法主要有:顺序查找、折半查找、分块查找,分别适用于线性表、有序顺序表、索引顺序表。

分块查找:将主表元素逻辑上分成若干块,分块特性为“块内无序,块间有序”,换而言之,每块中元素可无序存放,前一块中任意一个元素的关键字均小于后一块中所有元素的关键字。索引表保存每块元素的起始位置。

分块查找步骤:

(1)查找索引表:(可用顺序或折半)

(2)在一块中查找:(可用顺序或折半)

散列表

散列(hash)是一种按关键字编址的存储和检索方法。

散列函数

在数据元素的噶un尖子与该元素的存储位置之间建立一种关系,将这种关系称为散列函数(hash function)。

排序

常用:插入排序、交换排序、选择排序、归并排序。

插入排序算法有三种:直接插入排序、折半插入排序、希尔排序。

交换排序有两种:冒泡排序和快速排序。

冒泡排序:

public  static void buttleSort(int [] table){

boolean exchange =true;

for(int i=1;i<table.length&&exchange;i++){

exchange=false;

for(int j=0;j<table.length-i;j++){

if(table[j]>table[j+1]){

int temp=table[j];

table[j]=table[j+1];

table[j+1]=temp;

exchange=true;

}

}

}

}

快速排序

在数据序列中选择一个值作为比较 的基准值,每趟从数据库序列的两端开始比较交替进行,将小于基准值额元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置则成为基准值的最终位置,同时,序列被划分为两个子序列,再用同样的方法分别对两个子序列进行排序。

选择排序

两种:直接选择排序和堆排序

直接选择排序:每次选一个最小放在前端,将剩下的依次选最小,放前端最小之后。

堆排序:是完全二叉树的应用。

归并排序:将两个已排序的子序列合并,形成一个排序数据序列,又称两路归并排序。

数据结构基础总结,布布扣,bubuko.com

时间: 2024-10-14 13:02:25

数据结构基础总结的相关文章

中国大学MOOC-陈越、何钦铭-数据结构基础习题集 03-1. 二分法求多项式单根

03-1. 二分法求多项式单根(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 二分法求函数根的原理为:如果连续函数f(x)在区间[a, b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2:否则 如果f(a)f(b)<0,则计算中点的值f((a+b)/2): 如

翻译:程序员数据结构基础:选择正确的数据结构

本文转载自GameDev.net,仅供学习交流.因为刚刚开始学习翻译,难免有些疏漏,如果有哪些地方翻译的不正确,请不吝告知,万分感谢. 原文链接:http://www.gamedev.net/page/resources/_/technical/general-programming/data-structures-for-pre-college-programmers-choosing-the-right-structure-r2991 网络上的许多初学者还是学生.通常初学者通过在网上看教程,

算法与数据结构基础10:C++实现——拓扑排序

一 定义 拓扑排序是对有向无环图(Directed Acyclic Graph简称DAG)顶点的一种排序, 它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面. 二 先决条件 能够进行拓扑排序图有两个先决条件:有向.无环,即有向无环图. 三 偏序全序 连通图:任意两点之间都存在至少一条边 偏序:非连通图(有向无环图满足偏序关系) 全序:单连通图 四 结果唯一性 对于仅满足偏序关系的有向无环图中,因为有两个点之间的关系是不确定的,所以导致排序的结果是不唯一的. 满足全序关系的有

数据结构基础温故-6.查找(上):基本查找与树表查找

只要你打开电脑,就会涉及到查找技术.如炒股软件中查股票信息.硬盘文件中找照片.在光盘中搜DVD,甚至玩游戏时在内存中查找攻击力.魅力值等数据修改用来作弊等,都要涉及到查找.当然,在互联网上查找信息就更加是家常便饭.查找是计算机应用中最常用的操作之一,也是许多程序中最耗时的一部分,查找方法的优劣对于系统的运行效率影响极大.因此,本篇讨论一些查找方法. 一.顺序查找 1.1 基本思想 顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后

数据结构和算法 (二)数据结构基础、线性表、栈和队列、数组和字符串

Java面试宝典之数据结构基础 —— 线性表篇 一.数据结构概念 用我的理解,数据结构包含数据和结构,通俗一点就是将数据按照一定的结构组合起来,不同的组合方式会有不同的效率,使用不同的场景,如此而已.比 如我们最常用的数组,就是一种数据结构,有独特的承载数据的方式,按顺序排列,其特点就是你可以根据下标快速查找元素,但是因为在数组中插入和删除元素会 有其它元素较大幅度的便宜,所以会带来较多的消耗,所以因为这种特点,使得数组适合:查询比较频繁,增.删比较少的情况,这就是数据结构的概念.数据结构 包括

算法与数据结构基础11:C++实现——二拆搜索树节点删除

基于我的另一篇文章<算法与数据结构基础4:C++二叉树实现及遍历方法大全> ,二叉树的结构用的这篇文章里的. 二查找叉树的删除可以细分为三种情况: 1 被删除的是叶子节点,直接删除: 2 被删除只有一个子节点,指针下移: 3 有两个子节点,为了不破坏树的结构,需要找出一个节点来替换当前节点. 根据二叉树的特点,当前节点大于所有左子树,小于所有右子树, 可以用左子树中最大的节点,或者右子树最小的节点来替换当前节点,然后删除替换节点. // BSTree.h #include <cstdio

OpenCV基础数据结构--基础入门

 图像数据结构 IPL 图像: IplImage |-- int  nChannels;     // 色彩通道数(1,2,3,4) |-- int  depth;         // 象素色深: |                       //   IPL_DEPTH_8U, IPL_DEPTH_8S, |                       //   IPL_DEPTH_16U,IPL_DEPTH_16S, |                       //   IPL_

Python之微信H5斗牛出租平台搭建数据结构基础

微信H5斗牛出租平台搭建下载网站:h5.fanshubbs.com联系Q1687054422一.数据结构基础 a.什么是数据结构 b.数据结构的分类 c.列表 列表d.栈 二.栈的Python实现 a.栈的应用--括号匹配为题 括号匹配实现b.队列 c.队列的实现 d.队列的实现原理--环形队列 e.队列的实现原理--环形队列 ![](http://i2.51cto.com/images/blog/201802/03/07e08bf827bebcb6e258e9ccfd28f20a.jpg?x-

数据结构基础(1)--数组C语言实现--动态内存分配

数据结构基础(1)--数组C语言实现--动态内存分配 基本思想:数组是最常用的数据结构,在内存中连续存储,可以静态初始化(int a[2]={1,2}),可以动态初始化 malloc(). 难点就是数组在删除或者插入元素的时候,要移动元素的坐标不好确定.规律: 1.如果要在数组中第pos个位置插入一个元素(应该从后面开始移动) for( i=cnu;i>=pos;i--) pBase[i]=pBase[i-1]; 2.删除数组第pos位置的元素 for(i=pos+1;i<=cnu;i--)