数据结构
文章平均质量分 86
huangleijay
研发工程师,在二手交易、云平台、云搜索和长视频领域工作多年,略有所悟。
展开
-
单链表
单链表1、链接存储方法 链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ①用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ②链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointe原创 2013-09-11 15:55:24 · 623 阅读 · 0 评论 -
顺序表和链表的比较
顺序表和链表各有短长。在实际应用中究竟选用哪一种存储结构呢?这要根据具体问题的要求和性质来决定。通常有以下几方面的考虑:┌───┬───────────────┬───────────────┐│ │ 顺序表 │ 链表 │├─┬─┼───────────────┼───────────────┤│基│分│静态原创 2013-10-08 17:06:05 · 416 阅读 · 0 评论 -
线性表
线性表的逻辑定义 线性表(LinearList)是由n(n≥0)个数据元素(结点)a1,a2,…,an组成的有限序列。 ①数据元素的个数n定义为表的长度(n=0时称为空表)。 ②将非空的线性表(n>0)记作:(a1,a2,…,an) ③数据元素ai(1≤i≤n)只是个抽象符号,其具体含义在不同情况下可以不同。 【例1】英文字母原创 2013-10-08 17:06:03 · 495 阅读 · 0 评论 -
基数排序
基数排序(radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucketsort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其原创 2013-09-11 15:57:27 · 648 阅读 · 0 评论 -
栈定义及其基本操作,顺序栈和链栈
栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。栈和队列被广泛应用于各种程序设计中。栈的定义及基本运算1、栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。原创 2013-09-11 15:56:26 · 1653 阅读 · 0 评论 -
双链表
双链表1、双向链表(Double Linked List) 双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。 注意: ①双链表由头指针head惟一确定的。 ②带头结点的双链表的某些运算变得方便。 ③将头结点和尾结点链接起来,为双(向)循环链表。2、双向链表的结点结构原创 2013-09-11 15:55:49 · 860 阅读 · 0 评论 -
程序员必知8大排序,成为大牛!
每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 要编写出优秀的代码同样要扎实的基础,如果排序和查找原创 2013-09-11 15:57:46 · 488 阅读 · 0 评论 -
B-树
B-树转至http://blog.csdn.net/hguisu/article/details/77860141.B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的原创 2013-09-11 15:57:37 · 572 阅读 · 0 评论 -
队列的定义及基本运算
队列的定义及基本运算1、定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列。 (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。 队列的原创 2013-09-11 15:57:09 · 7440 阅读 · 0 评论 -
单链表和双链表在执行删除操作时的…
写双链表的删除操作时,一开始是采用单链表的方法。在执行的时候,删除非末尾节点还正常,但当删除的节点时最后一个节点时,执行时会返回位置(也就是指针)出错无法执行的情况。调试了好多次,也没找到原因。通过思考,最终找到了两者的区别,以下是两个操作的代码:单链表删除:Node *delete_element_list(Node *head,int i) {原创 2013-09-11 15:56:19 · 836 阅读 · 0 评论 -
双向链表,单链表
双链表就是双向链表,就是在单链表的每个结点里再增加一个指向其直接前趋的指针域prior,形成两条不同方向的链。由头指针head惟一确定。双链表也可以头尾相链接构成双(向)循环链表。双链表上的插入和删除时间复杂度均为O (1)。************************************************************单链表运算:·建立单链表·头插法:s->原创 2013-09-11 15:55:51 · 739 阅读 · 0 评论 -
数据结构基本概念与术语
数据(Data) 数据是信息的载体。它能够被计算机识别、存储和加工处理,是计算机程序加工的"原料"。 随着计算机应用领域的扩大,数据的范畴包括: 整数、实数、字符串、图像和声音等。数据元素(Data Element) 数据元素是数据的基本单位。数据元素也称元素、结点、顶点、记录。 一个数据元素可以由若干个数据项(也可称为字段、域、属性)原创 2013-09-11 15:55:33 · 1046 阅读 · 0 评论 -
顺序表
顺序表 1. 顺序表的定义 (1)顺序存储方法 即把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。(2) 顺序表(Sequential List) 用顺序存储方法存储的线性表简称为顺序表(Sequential List)。2. 结点ai 的存储地址 不失一般性,设线性表中所有结点的类型相同,则每个结点所占用存储原创 2013-09-11 15:55:31 · 860 阅读 · 0 评论 -
排序算法的稳定性研究
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,所有内原创 2014-04-25 16:38:32 · 471 阅读 · 0 评论