
数据结构
文章平均质量分 51
彼岸之音
这个作者很懒,什么都没留下…
展开
-
C语言数据结构-单链表
单链表在数据结构里十分常见,是一种常见的线性表,下面介绍其性质并用代码实现相关功能 单链表以链接方式存储数据 1、链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址。 2、链表的结点结构原创 2015-10-10 16:59:12 · 984 阅读 · 0 评论 -
优先队列-堆
优先队列 队列是一个操作受限的线性表,数据只能在一端进入,另一端出来,具有先进先出的性质。有时在队列中需要处理优先级的情况,即后面进入的数据需要提前出来,这里就需要优先队列。优先队列是至少能够提供插入和删除最小值这两种操作的数据结构。对应于队列的操作,插入相当于入队,删除最小相当于出队。 链表,二叉查找树,都可以提供插入和删除最小这两种操作。对于链表的实现,插入需要O(1),删除最小需要遍历原创 2017-03-06 22:41:00 · 3749 阅读 · 2 评论 -
C语言数据结构-顺序栈
顺序栈顺序栈为具有特殊运算操作的顺序表,数据通过栈顶先进先出。栈的数据空间和数组类似存储固定的一类数据。存储在连续的空间中,通过出栈和入栈来进行数据操作。 具体看下面的函数实现:#include <stdio.h>#define StackSize 20//定义顺序栈结构typedef struct{ int data[StackSize]; //栈中数据 int top;原创 2015-10-10 21:40:21 · 1260 阅读 · 0 评论 -
C语言数据结构-双链表
双链表与单链表不同的是,双链表节点具有两个指针,一个指向后面数据,一个指向其前面的数据。其结构如下图所示:当首尾相连时,链表叫做双循环链表; 其和单链表类似,通过一个头指针来表示;下面为双循环链表的创建及相关的插入删除函数实现:#include <stdio.h>#include <stdlib.h>//定义链表节点结构typedef struct node{ int data;原创 2015-10-10 19:08:43 · 1156 阅读 · 0 评论 -
数据结构-散列
散列的基本思想就是映射,通过哈希函数将关键字信息映射到另外一个值,这个值保存了关键字信息的存储地址,查找的时候可以直接通过关键字获取查找的信息,而不需要进行复杂的搜索运算,查找的期望时间为O(1),保存了关键字信息的数据结构叫做散列表。例如数12,23,34,46,59,散列函数为数值的十位数字,则这5个值可以分别映射到1,2,3,4,5保存在散列表中,在查找数据时根据其映射值在表中可以直接得到消息原创 2017-03-06 16:04:09 · 958 阅读 · 0 评论 -
C语言数据结构-顺序表
顺序表:即在计算机中以数组结构保存的线性表,与数组类似,但可以对其进行插入删除等操作,其中数据类型是一样的,并且存储在一个连续的区域内。下面创建顺序表并进行测试;#include <stdio.h>#define ListSize 100 //表空间大小设定为100#define N 8//表结构typedef struct{ int date[ListSize]; /原创 2015-10-10 10:19:55 · 1342 阅读 · 0 评论 -
C++顺序容器vector,deque,list
容器即可以包含各种的数据形式的结构类,c++ stl中可以理解为存放其他对象的对象,在c++标准库中有许多容器类型,包括顺序容器和关联容器,这里介绍几种顺序容器的基本操作和应用; 1、这里先介绍标准容器定义的运算符: 这里a ,b 为容器实例。2、所有容器的迭代器访问接口3、其他的一些通用访问接口4、介绍完了一般容器的接口外,这里再详细说明顺序容器的接口,顺序容器一般接口5、顺序容器其他原创 2015-10-26 11:49:22 · 732 阅读 · 0 评论 -
C语言数据结构-链队列
链队列链队列与链表相似,不同的是它具有对列的运算方法,存储结构和链表相同,下面是其结构示意图:这里的*Q类似于链表的头节点*head;它包含两个指向队列节点的指针front和rear;当front和rear都为NULL时队列为空;front指向队列第一个节点,rear指向最后一个节点,当两者指向同一个节点说明队列只有一个节点; 还有不设头指针的链队列表示形式,这里不予说明;下面为上图所示链队列结构原创 2015-10-11 16:33:42 · 4758 阅读 · 1 评论 -
C语言数据结构-顺序队列
顺序队列顺序队列与顺序表相似,只不过其具有队列的运算规则。数据只能从队尾进,对头出,为先进先出方式。 分别用两个数来表示队头front和队尾rear的位置,其只能向前增加,不能退后,这样容易溢出且浪费空间,因此一般用循环队列来表示,及队列空间的首尾相连的,当达到队尾时可以跳转到最开始位置。 下面为顺序队列和循环队列的结构图:循环队列一般用一个额外的数来表示队满或队空,或者空一个元素,用来测试尾指原创 2015-10-11 11:59:37 · 4051 阅读 · 0 评论 -
C语言数据结构-链栈
链栈链栈即以链式结构存储的栈,与链表相似,但具有栈的运算规则。 其结构如下所示:链栈一般用一个头指针结构top来表示,它指向栈顶元素,对于链表来说,top结构相当于它的头指针head。下面是链栈的实现及相关运算函数:#include <stdio.h>#include <stdlib.h>#define Datatype int//栈节点定义typedef struct Lstack{原创 2015-10-11 10:28:18 · 1731 阅读 · 0 评论 -
数据结构-图
图的定义图G=(V,E)由顶点(vertex)的集V和边(edge)的集E组成,每一条边就是一个点对(v,w)。如果点对即边是没有方向的,那么就是无向图,如果边是有方向的,那么就是有向图。无向图点对用(v,w)表示,有向图点对用<v,w>表示。有些图的边会有权重,用来表示边的权值。当图的每一个顶点与其他定点都存在一条边时为完全图。图a、b分别为有向图和无向图:原创 2017-03-07 21:31:14 · 1001 阅读 · 0 评论