数据结构与算法
文章平均质量分 75
许我向你看丶
梦想是注定孤独的旅程!
展开
-
查找算法
查找一、查找概论各位都用过搜索引擎。搜索引擎的大概工作原理就是利用网络“爬虫”抓取并复制网页,并且可以通过该网页的链接来抓取更多的网页。那么,搜索引擎的是通过什么来抓取网页的呢?就是通过“关键字”来识别网页并抓取网页的。查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(Search Table)是由同一类型原创 2017-04-16 21:33:45 · 455 阅读 · 0 评论 -
算法简介
算法简介:一、数据结构与算法的关系虽然本门课程叫“数据结构”,但经常会讲到算法,以及它们之间的关系。在市面上也经常有诸如“数据结构与算法分析”这样名字的书。实际上,数据结构与算法是依存关系。只谈数据结构而抛弃算法,则数据是“死”的,没有活力的;只谈算法而抛弃数据结构,则算法无法有所依赖的操作对象,只是空谈。对于程序来说,数据结构赋予其血肉骨骼,算法赋予其灵魂思想,二者合一才是完整的程序原创 2017-04-16 21:25:58 · 643 阅读 · 0 评论 -
线性表(中)之链式存储
一、线性表的链式存储结构前面所讲的线性表的顺序存储结构是有缺点的,最大的缺点就是插入和删除时需要移动大量的元素,这显然就需要耗费大量时间。仔细考虑一下产生该问题的原因,在于相邻元素的存储位置也具有邻居关系,它们在内存中是紧挨着的,没有空隙,自然也没有空位进行介入,而删除后留下的空隙自然也需要弥补。为了解决上述问题,我们打破常规,不再让相邻元素在内存中紧挨着,而是上一个元素留存下一个元素原创 2017-04-16 21:27:52 · 550 阅读 · 0 评论 -
线性表(上)之顺序存储
线性表一、线性表定义:1、线性表的定义定义:线性表(List):零个或多个数据元素的有限序列。注意:1)线性表是一个序列。也就是说,线性表的元素之间是有序的。若元素存在多个,对于其中一个元素来说,它前面的元素叫前驱,后面的元素叫后继。第一个元素无前驱,最后一个元素无后继,中间的元素只有一个前驱,一个后继。2)线性表是有限的。事实上,在计算机科学领域,我们只研究有限的序列,因原创 2017-04-16 21:27:08 · 256 阅读 · 0 评论 -
线性表(下)之链式存储之双向,单向循环列表
线性表之链式存储(双向循环链表)//注意:该文件操作的链表为带头结点双向链表,头结点数据为-1#include #include #include #define OK 1#define ERROR 0typedef int data_t;typedef struct DulNode{data_t data;struct DulNode *pri原创 2017-04-16 21:28:41 · 226 阅读 · 0 评论 -
栈(上)之顺序栈
一、栈的定义定义:栈(stack):栈是限定仅在表的一端进行插入或删除操作的线性表。我们把允许插入和删除操作的一端称为栈顶(top),另一端称为栈底(bottom)。不含任何数据元素的栈称为空栈。栈又称为“后进先出(Last In First Out,简称LIFO)的线性表”,简称为LIFO结构。栈的插入操作,称为进栈/入栈/压栈。栈的删除操作,称为出栈/弹栈。不过要注意的是,原创 2017-04-16 21:29:26 · 709 阅读 · 0 评论 -
栈(下)之链式栈
链式栈代码#include #include #define OK 1#define ERROR 0typedef int data_t;typedef struct StackNode{data_t data;struct StackNode *next;}LinkStack;LinkStack *CreateEmptyStac原创 2017-04-16 21:30:01 · 187 阅读 · 0 评论 -
队列(上)之链式队列
一、队列的定义定义:队列(queue):队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入操作的一端称为队尾,允许删除操作的一端称为队头。队列与现实生活中的排队机制很像,排在队头的出队,而想入队则只能从队尾开始。六、循环队列线性表有顺序存储和链式存储两种结构,队列作为特殊的线原创 2017-04-16 21:30:48 · 600 阅读 · 0 评论 -
队列(下)之循环队列
循环队列代码#include #include #define MAXSIZE 20#define OK 1#define ERROR 0typedef int data_t;typedef struct{data_t data[MAXSIZE];int front;//队头位置int rear;//队尾下一个位置}SqQue原创 2017-04-16 21:31:35 · 232 阅读 · 0 评论 -
树(上)之二叉树
树与二叉树一、树的定义:1、定义:树(Tree)是n(n>=0)个节点的有限集,n=0时称为“空树”。在任意一棵非空树中:⒈有且仅有一个特定的称为根(root)的节点。⒉当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2……Tm,其中每一个集合本身又是一棵树,并且称之为根的子树(SubTree)。注意:⒈n>0时根节点是唯一的,不可能存在多个根节点。⒉m原创 2017-04-16 21:32:14 · 407 阅读 · 0 评论 -
附录:球钟代码
#include#include#define ONEMIN 5#define FIVEMIN 12#define ONEHOUR 12#define BALLQUE 28#define OK 1#define ERROR 0typedef int data_t;typedef struct{data_t *data;int top;//栈顶in原创 2017-04-16 21:36:42 · 322 阅读 · 1 评论 -
附录:8皇后问题代码
#includeint gEightQueen[8]={0};int gCount=0;void print_cross(){int i,inner;for(i=0;i{for(inner=0;inner{printf("_|");}printf("Q|");for(;inner{printf("_|");}printf("\n"原创 2017-04-16 21:35:57 · 251 阅读 · 0 评论 -
附录:约瑟夫环代码
#include #include typedef int data_t;/* use a cycle linked list without header node */typedef struct node_t{data_t data;struct node_t *next;} linknode_t, *linklist_t;int原创 2017-04-16 21:35:24 · 212 阅读 · 0 评论 -
排序算法
排序一、排序的基本概念与分类1、排序的定义假设含有n个记录的序列为{r1,r2,……rn},其相对应的关键字分别为{k1,k2,……kn},需确定一种序列,使其关键字满足k1=k2>=……>=km(非递增)关系,即使得序列成为一个按关键字有序的序列{r1,r2,……,rm},这样的操作就称为排序。排序的依据是关键字之间的大小关系,那么,对于同一个记录集合,针对不同的关键字进行排序,原创 2017-04-16 21:34:44 · 278 阅读 · 0 评论 -
数据结构简介
数据结构绪论一、数据结构起源早期人们把计算机作为数值计算工具,就是说,人们认为计算机只能进行数据计算。因此为了解决问题,需要先从具体问题中抽象出一个适当的数据模型,设计出一个解决该模型的算法,然后再编写程序,得到一个实际的软件。可现实生活中,人们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表格、索引等)的帮助,才能更好的解决问题。所以,数据结构是一门研究非数值计算的原创 2017-04-16 21:25:07 · 584 阅读 · 0 评论