数据结构与算法
文章平均质量分 60
Dear_Mr
尽自己的努力,做好该做的事情
展开
-
线性结构—线性表
线性结构之线性表线性结构:线性表、栈、队列、串和数组线性结构的特点:除了第一个元素和最后一个元素外,每个数据元素有一个前驱和一个后继,线性表是最简单、最基本、最常用的数据结构,它有顺序存储和链式存储两种存储方案1. 线性表线性表是n个数据元素的有限序列,在表中,元素之间存在着线性的逻辑关系特点:同一性(线性表由同类元素组成,每一个ai必须属于同一数据对象) 有穷性(线性表是由有限个数原创 2017-04-13 12:33:00 · 1021 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路分析:可以想到两种解决方案第一种创建新的字符串,在新的字符串中进行替换第二种就是在原来的字符串上做替换,并且保证输入的字符串后面有足够多的多余空间这里我用的是第二种在原来字符串上进行替换,替换的顺序有两种,从前向后替换和从后向前替换,从原创 2017-07-12 19:34:04 · 411 阅读 · 0 评论 -
二维数组中的查找
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数思路描述:一个数字的下方和右方是比它本身大的区域,而左方和上方时比它本身小的区域。选取右上角的数字进行比较,当该数大于指定的数时,舍去该列,当该数小于指定的数时,舍去该行,当相等时,则表示找到C语言实现:#include<std原创 2017-07-11 20:03:58 · 394 阅读 · 0 评论 -
算法笔记(一)
题目一题目说明:对一个数做若干次交换,直到这个数只剩下一个数字,交换的规则是,将这个数变为所有位数上的数字的乘积,比如285经过一次变换之后转换成2*8*5=80,问题是,要做多少次变换,使得这个数变成个位数输入描述:输入一个正整数,小于等于2,000,000,000输出描述:输出一个整数,表示变换次数输入例子:285输出例子:2代码如下:#include<stdio.h>#include<std原创 2017-05-20 11:56:52 · 1457 阅读 · 0 评论 -
查找
概念:根据给定的值,在某个集合中确定该值所处的位置查找算法(比较式查找算法分为):(1)基于线性表的查找。例如:顺序查找、折半查找、分块查找(2)基于树的查找。例如二叉排序树、B树、AVL树平均查找长度:为确定某元素在查找表中的位置需要和给定值进行比较的关键字个数的期望值,称为该查找算法查找成功的平均查找长度。对于长度为n的查找表,查找成功的平均查找长度如下所示: ASL=∑i=1nPiCiAS原创 2017-04-24 23:25:03 · 625 阅读 · 0 评论 -
广度优先搜索算法—BFS
广度优先搜索算法—BFS图的广度优先搜索遍历类似于树的按层次遍历,其基本思想是从图中的某个顶点V0V_0出发,在访问此顶点之后依次访问V0V_0的所有未被访问的临接点,之后按这些邻接点被访问的先后顺序依次访问到它们的邻接点,直到图中所有和V0V_0有路径相通的顶点都被访问到。若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作为新的出发点,重复此过程,直至图中所有顶点都被访问到。邻接表的建立过原创 2017-04-24 19:01:26 · 603 阅读 · 0 评论 -
深度优先搜索算法—DFS
深度优先搜索算法—DFS图的遍历方法主要有两种:深度优先搜索遍历(DFS)和广度优先搜索遍历DFS深度优先搜索遍历类似于树的先序遍历,尽可能从纵深方向进行搜索,简单来说,DFS就是想找到最长的路径,基本思想是从图某个顶点V0V_0开始,访问此顶点,然后依次从V0V_0的各个没有访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0V_0有路径连通的顶点都被访问到,若图是连通图,则遍历结束,否则,图中原创 2017-04-23 22:04:37 · 984 阅读 · 0 评论 -
回溯法与N皇后问题
N皇后问题要求求解在N*N的棋盘上放置N个皇后,并使各皇后彼此不受攻击的可能的棋盘布局,皇后彼此不受攻击的所有可能的布局,皇后彼此不受攻击的约束条件是:任何两个皇后均不能在棋盘同一行、同一列或者在对角线上出现。由于N皇后问题不允许两个皇后在同一行,所以,可用一维数组X表示N皇后问题的解,X[i]表示第i行的皇后所在的列,条件表述如下:X[i] = X[s],则第i行和第s行皇后在同一列上如果第i原创 2017-04-23 16:22:42 · 4643 阅读 · 0 评论 -
非线性结构之树
非线性结构之树1. 树的定义和表示树是n (n≥0n \geq 0 ) 个结点的有限集合,当n=0n = 0时,成为空树;当 n≥0n \geq 0 时,该集合满足如下条件:有且仅有一个根节点,该结点没有前驱,有≥0 \geq 0个后继除根节点之外的n−1n-1个结点可划分为m(m≥0m \geq 0)个互不相交的有限集T1,T2,T3…,TmT_1,T_2,T_3…,T_m,每个TiT_i又是原创 2017-04-21 21:24:15 · 792 阅读 · 0 评论 -
模式匹配算法
1. BF模式匹配算法算法思想:Brute-Force算法又叫蛮力匹配算法(简称BF算法),从主串S的第pos个字符开始,和模式串T的第一个字符进行比较,若相等,则继续逐个比较后续字符;否则回溯到主串S的第pos+1个字符开始再开始重新和模式串T进行比较,依此类推,直至模式串中的每一个字符依次和主串中的一个连续的字符序列全部相等,则称模式匹配成功,此时返回模式串T的第一个字符在主串S中出现的位置;否原创 2017-04-17 15:49:33 · 1355 阅读 · 0 评论 -
线性结构之串
线性结构之串字符串是一种特殊的线性表,它的特殊性在于线性表的数据元素限定为字符串。1. 几个常用的操作#ifndef _VSTRING_H_#define _VSTRING_H_#include<stdio.h>#include<string.h>#include<malloc.h>#define MAXSIZE 100int strLength(char *s); /原创 2017-04-16 21:39:04 · 1754 阅读 · 0 评论 -
线性结构之队列
线性结构之队列计算机输入输出缓冲区的结构就是队列的应用,队列是另一种限定性线性表,只允许在表的一端进行,而删除在表的另一端进行,这种结构叫做队或队列,把允许插入的一端叫做队尾,把允许删除的一端叫做队头,队列的插入操作叫做入队列,队列的删除操作叫做出队列或者退队列;队列中没有元素时,叫做空队列。队列是“先进先出”表。基本操作如下:(1)队列初始化(2)入队操作(3)出队操作(4)读队头元素(5)判队空原创 2017-04-16 17:10:52 · 526 阅读 · 0 评论 -
线性结构—栈
线性结构之栈栈是一种只允许在一端进行插入和删除的线性表,它是一种操作受限的线性表,在表中只允许进行插入和删除的一端称为栈顶,另一端称为栈底顺序栈—栈的顺序存储结构基本操作如下:初始化栈(建立栈空间,初始化栈顶指针)判栈空(将top值与-1进行比较,相等则说明栈空)判栈满(将top值与MAXSIZE-1进行比较,想等说明栈满)入栈(在栈未满的情况下,进行入栈操作)出栈(在栈未空的情况下,进行原创 2017-04-13 20:42:03 · 713 阅读 · 0 评论 -
多维数组
多维数组一个n维数组可以看成是由“n-1维数组”的数据元素构成的一维数组,因此,多维数组可以看成是一种特殊的线性表,其特殊性在于表中的元素本身也是一种线性表。数组一旦被定义,它的维数和维界就不再改变,因此,除了结构的初始化和销毁之外,数组的操作只有获得特定位置的元素值和修改特定位置的元素值。这两种操作的关键都是数据元素的定位,即确定给定元素的下标,得到该元素在计算机中的存储位置,其本质都是地址计算问原创 2017-04-17 21:12:55 · 1278 阅读 · 0 评论 -
网易笔试编程题详解
题目一 彩砖的问题解析:在答这道题的时候,我分析出,首先是和字母的种类数有关系的,当这个种类数为2的时候,它是存在的,而且结果是2,因为BBAA与AABB,当这个种类数为3或者大于3的时候,这个时候是不存在,因为,只要第三种和前两种相邻,这个结果就是大于1的,对于种类数为0和1的情况,我都认为是0(理解错误),在这一块,我犯了错误,题目中是“最多存在一对不同颜色的相邻砖块”,也就是说包含着一对都不存原创 2017-08-12 19:36:15 · 830 阅读 · 0 评论