数据结构
文章平均质量分 74
主要介绍《数据结构》一书中的各种数据结构,及算法。
jesson20121020
时人莫小池中水,浅处不妨有卧龙
展开
-
数据结构(C实现)------- 图的广度优先遍历
[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]算法描述: 设图G的初始状态是所有顶点均未被访问过,在G中的任选一顶点vi为初始出发点,则广度优先遍历 可定义如下:首先,访问初始出发点vi,接着依次访问vi的所有邻接点w1,w2,...,wk;然后,依次访问w1,w2,...,wk 的邻接的原创 2015-01-16 00:10:42 · 1725 阅读 · 0 评论 -
数据结构(C实现)------- 图的深度优先遍历
[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]原创 2015-01-16 00:09:19 · 1868 阅读 · 0 评论 -
数据结构(C实现)------- 图的邻接表表示
[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 图的邻接表表示法类似于树的孩子链表表示法,就是对图中的每个顶点vi,将所有邻接于vi的顶点链接成一个单链表,这个单链表就称为顶点vi的邻接表。在邻接表中有两种结点结构:头结点(vexdata,firstarc)、表结点(adjvex,nextarc)。 其原创 2015-01-12 00:20:35 · 1443 阅读 · 0 评论 -
数据结构(C实现)------- 图的邻接矩阵表示
[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 邻接矩阵是表示顶点之间相邻顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,若(vi,vj)属于E,则对应G的邻接矩阵中的元素A[i][j] = wij 或1,否则,A[i][j] = 0或无穷大,其中,wij可以指边的权重。 无向图或无向网原创 2015-01-07 00:02:11 · 1526 阅读 · 0 评论 -
数据结构(C实现)------- 遍历二叉树
二叉树是另一中树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。原创 2014-09-25 22:09:54 · 1538 阅读 · 0 评论 -
数据结构(C实现)------- 串
字符串(简称串),可以将其看作是种特殊的线性表,其特殊性在于线性表的数据元素的类型总是字符性,字符串的数据对象红豆为字符集。 串是由0个或多个字符组成的有限序列。一般记作:s = "s1 s2 s3 .... sn",,其中,s是串名,用双引号括起来的字符序列称为串的值,si(1串中的几个术语: 1. 空串: 由0个字符组成的串称为空串,空串不包含任何字符,其长度为0。原创 2014-09-23 00:59:05 · 4109 阅读 · 1 评论 -
数据结构(C实现)------- 链队列
链队列,即队列的链式存储结构,它是仅在表头删除和表尾插入的单链表,因此一个链队列需要设置两个分别指示队头元素和队尾元素的指针,为了操作方便,给链队列添加一个头结点,并令队头指针指向头结点,由此,空的链队列的判断条件就是队头指针和队尾指针均指向头结点。链队列的类型描述://链队列类型描述typedef int QElemType;typedef struct node{ QElemTy原创 2014-09-22 00:30:53 · 1914 阅读 · 0 评论 -
数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
循环顺序队列的另一种实现方式,即少用一个存储空间来实现循环顺序队列原创 2014-09-22 00:13:34 · 4425 阅读 · 0 评论 -
数据结构(C实现)------- 顺序队列(循环队列之计数器实现)
为了能充分的利用空间,解决顺序队列的“假溢出”问题,可以采用两种方法:一种是将数据向前移动,让空的存储单元留在队尾;另一种是将顺序队列构造成一个环状的空间,即将队列的数据区data[0....MAXSIZE-1]看成头尾相接的循环结构,使得data[0]接在data[MAXSIZE-1]之后,这就是循环队列。 这节就来实现循环顺序队列。 循环队原创 2014-09-21 16:08:09 · 2911 阅读 · 0 评论 -
数据结构(C实现)------- 顺序队列(非循环队列)
和栈相反,队列是一种先进先出的的线性表。它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的队列是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端叫做队尾,允许删除的一端则稀烂为队头。 顺序队列,即队列的顺序存储结构。由于队列的队头和队尾的位置均发生变化,因此在队列顺序存储结构中,除了用一组地址连续的存储单元依次存放从队头到队尾的元素之外,还需要附设原创 2014-09-21 15:04:37 · 1577 阅读 · 1 评论 -
数据结构(C实现)------- 链栈
描述: 链栈,即栈的链式存储结构,链栈通常使用不带头结点的单链表来表示,因此其结点的结构和单链表的结点结构相同。 在一个链栈中,栈底就是链表的最后一个结点,而栈顶总是链表的第一个结点。因此,新入栈的元素即为链表中采用头插法新加入的结点,一个链栈可以由栈顶指针唯一确定,当top为NULL时,则表示该栈是一个空的链栈。 实现:原创 2014-09-21 00:12:03 · 1394 阅读 · 0 评论 -
数据结构(C实现)------- 顺序栈
栈是限定仅在表的一端进行插入或删除的纯属表,通常称允许插入,删除的一端为栈顶(Top),相应在的,则称另一端为栈底(Bottom)。不含元素的栈则称为空栈。 所设栈S={a1,a2,a3,...,an},则称a1为栈底元素,an为栈顶元素。根据栈的定义可知,栈顶元素总是最后入栈并且最先出栈的;栈底元素总是最先入栈并且最后出栈的。即栈是按后进先出的原则进行的。因此,栈又称为后进先原创 2014-09-20 00:18:33 · 1757 阅读 · 0 评论 -
数据结构(C实现)------- 双向链表
双向链表的结点描述及各种操作(C实现)原创 2014-09-19 00:18:45 · 1321 阅读 · 0 评论 -
数据结构(C实现)------- 单链表
在单链表中,每一个结点包含两部分:存放每一个数据元素本身信息的数据域和存放其直接后继存储位置的指针域。 单链表结点的类型描述:typedef int ElemType;typedef struct node{ ElemType data; struct node *next;}LNode,*LinkList; 单链表的存取必须从头指针开始原创 2014-09-17 11:11:57 · 1122 阅读 · 0 评论 -
数据结构(C实现)------- 顺序表
顺序表的C实现原创 2014-09-16 20:45:10 · 1200 阅读 · 0 评论 -
排序算法(C实现)------- 总结
上面讨论的排序算法均是原创 2014-09-08 20:05:17 · 846 阅读 · 0 评论 -
排序算法(C实现)--------- 堆排序
堆原创 2014-09-07 21:35:45 · 826 阅读 · 0 评论 -
排序算法(C实现)--------- 简单选择排序
选择排序的基本思想是:每一盐商原创 2014-09-07 17:11:57 · 798 阅读 · 0 评论 -
排序算法(C实现)---------- 折半插入排序
前面已经写过一篇插入排序,今天原创 2014-09-07 16:11:46 · 1111 阅读 · 0 评论 -
排序算法(C实现)-------- 归并排序
“归并”的含义原创 2014-09-04 17:31:14 · 602 阅读 · 0 评论 -
排序算法(C实现)--------- 快速排序
快速排序是对冒泡排序的一种改进,它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。原创 2014-09-04 15:20:21 · 541 阅读 · 0 评论 -
排序算法(C实现)------- 希尔排序
希尔排序(C实现)原创 2014-09-04 12:06:11 · 532 阅读 · 0 评论 -
排序算法(c实现)------- 插入排序
插入排序(C实现)原创 2014-09-04 11:14:59 · 659 阅读 · 1 评论 -
排序算法(C实现)------ 冒泡排序
冒泡排序原理: 重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。原创 2014-09-04 10:32:23 · 725 阅读 · 0 评论