数据结构与算法
qq_43224368
这个作者很懒,什么都没留下…
展开
-
牛客网-剑指offer刷题-03-从尾到头输出链表
从尾到头输出链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解法一(不太优雅): 思路: 新建一个空数组,遍历一遍链表获取链表长度,且开辟数组空间大小与链表长度相同 再次遍历链表,根据总长度和循环次序获取倒序后该元素的位置,依次设置数组元素即可 代码: public ArrayList<Integer> printListFromTailToHead...原创 2020-02-03 11:28:28 · 278 阅读 · 0 评论 -
牛客网-剑指offer刷题-02-替换空格
替换空格 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。(设字符串长度为n) 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解法一: 一次遍历 思路: 遍历字符串,每次遇到空格,则用 %20 替换空格,此时空格后面的所有字符均需要向后移动两个空格 代码: public String replaceSpace(...原创 2020-02-03 11:25:43 · 143 阅读 · 0 评论 -
牛客网-剑指offer刷题-01-二维数组中的查找
二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同)(设行数为m,列数为n) 每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法一:暴力枚举 public boolean Find1(int target, int[][] array) { fo...原创 2020-02-03 11:24:40 · 185 阅读 · 0 评论 -
栈的顺序存储结构实现
栈是一种特殊的线性表。 其一端称为栈顶,一段称为栈底。 栈的特点在于所有元素只能从栈顶进入(入栈),从栈顶出来(出栈)。 所以栈具有元素先进后出,后进先出的特点。 这种抽象的数据结构广泛用于计算机之中,比如写C语言的时候,编译器给自动分配的内存位于栈区,其操作方式即类似于栈的数据结构。 以下是栈的顺序存储结构实现 /* 栈的特点:入口和出口均在栈顶,先进后出 栈的顺序结构 函数:进栈;出栈 两栈...原创 2019-04-28 08:59:56 · 624 阅读 · 0 评论 -
共享栈的原理及代码实现(C语言)
共享栈是一种特殊的栈,由顺序存储结构实现。 其特点在于两个栈共享同一块存储空间。 可以参考下面这张示意图(莫嫌丑) 两个栈的栈底分别位于数组的两端,而栈顶位于中间的位置(由元素数量决定),在上图中栈一有三个元素,栈底位于下标零处,栈顶位于下标二处;栈二有两个元素,栈底位于下标八处,栈顶位于下标七处。 当有元素入栈,栈顶的位置便向另一侧靠近,直至两栈顶下标只差有,此时栈满。 以下是共享栈的C语言实...原创 2019-04-28 09:19:54 · 2910 阅读 · 4 评论 -
线性表的链式结构实现代码及简析
此处只实现了单链表,除此之外还有数组实现的静态链表(将数组分成使用中的链表和备用链表)、 循环链表(最后一个节点的next指针指向第一个节点)、双向链表(每个节点有一个previous指针指向上一个节点)等,实现方法大同小异,不再赘述。 链式结构查找、插入、删除算法的时间复杂度均为O(n),相对于顺序结构最大的优势在于可以动态分配空间,没有空间的限制,数据类型更抽象。 所以如果要对数据进行频繁的查...原创 2019-04-24 07:20:18 · 359 阅读 · 0 评论 -
线性表的顺序结构实现
线性表:最基础的数据结构,特点是一连一。 实现方式有顺序结构和链式结构,以下是顺序结构实现的代码。 /* 线性的顺序结构实现 函数:打印表;插入元素;删除元素。 */ #include <stdio.h> #include <Windows.h> #define maxNum 100 //线性表的顺序结构 typedef struct spList { int da...原创 2019-04-24 22:47:00 · 1107 阅读 · 0 评论