
数据结构
alieza
这个作者很懒,什么都没留下…
展开
-
【练习题】two_sum
题目:给定一组排好序的升序数组numbers,保证数组中没有重复出现的数字,从数组中找到两个数,这两个数相加的和等于target,写出get_tow_sum,返回这两个数的下标(下标从0开始),较小的下标在前,保证存在唯一的解。int* get_two_sum(int *numbers, int length, int target) { int *ans = (int *)malloc(s...原创 2019-03-15 14:32:40 · 176 阅读 · 0 评论 -
【LeetCode】100.相同的树
题目:如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / ...原创 2019-03-04 15:07:27 · 202 阅读 · 0 评论 -
【LeetCode】206.反转链表
206.反转链表题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题原创 2019-03-03 16:57:14 · 148 阅读 · 0 评论 -
【基础知识】二叉树、广义表、哈弗曼编码
二叉树完全二叉树: 不需要存地址. ( 算法优化常用完全二叉树: 记录式改为计算式 . 计算式耗时, 但省空间)左子树: 2 * i右子树: 2 * i + 1满二叉树: 没有度为1的结点. 要么是0, 要么是2.二叉树性质:1. 第i层最多有2^(i - 1)个结点2. 深度为k的二叉树最多有2^k - 1个结点3. 度为0(叶子结点)的结点比度为2的结点多14....原创 2019-03-02 10:55:26 · 512 阅读 · 0 评论 -
【基础知识】栈
特点:后进先出类似于一个桶.结构定义:栈顶初始化为-1int *data//数据区int max_size, top_index//栈顶指针下标入栈:栈顶指针向上移动一位出栈:栈顶指针向下移动一位表达式求值两个栈, 一个装数, 一个装符号.用isdigit()函数分辨他是否为数字0-9 返回值: 是->1 否->0 头文件<ctype.h>...原创 2019-03-02 10:53:25 · 299 阅读 · 0 评论 -
【基础知识】队列
特点:先进先出需要两个指针, 分别指向头和尾 ( head & tail )结构定义:队首标记为0, 队尾标记为-1给队列分配内存空间 (初始化类似于顺序表)int *data//数据区int head, tail, length入队:插在尾部出队:head指向head->next队列遍历:只需要将队首标记上到队尾标记上的所有元素依次输出就好.输出队...原创 2019-03-02 10:51:55 · 362 阅读 · 0 评论 -
【基础知识】链表
链表分为程序内部和内存内部程序内部 ________________________________ head |内存内部 1 add 2 add 5 add |l->口-> | 口口-> 口口-> 口口 | ————————————————————————————————— head存链表地址(也就是1的a...原创 2019-03-02 10:49:32 · 139 阅读 · 0 评论 -
【基础知识】顺序表
顺序表可以理解为一种特殊的数组顺序表有一片连续的存储区, 他可以存储任意类型的结构结构定义: 1. size : 顺序表的大小(容量, 也可以说一共有几个格子) 2. length : 标记顺序表现在共有的元素个数 3. data_type : 确定顺序表中每个位置(格子)存储的元素类型顺序表 - 插入:想让数值7插放在数值为3的位置. 7 | v1 2 ...原创 2019-03-02 10:47:42 · 461 阅读 · 0 评论 -
【基础知识】数据结构导论
程序 = 算法 + 数据结构数据结构 = 结构定义(结构体) + 结构操作数据结构本质: 做数据的表示从本质上来说, 存储整型的整数类型int就是一类数据结构, 指针类型也是一类数据结构. int可以做四则运算, 指针不行.所以int就相当于结构定义, 而所做的四则运算是结构操作.算法与数据结构:更像是太极阴阳两级算法. 如果算法脱离了数据结构就不能工作了,算法是解决问题的方法, 结构操...原创 2019-03-02 10:44:51 · 183 阅读 · 0 评论 -
【LeetCode】19.删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-&amp;gt;2-&amp;gt;3-&amp;gt;5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?题解:**普通思原创 2019-02-27 19:30:50 · 140 阅读 · 0 评论 -
递归实现双数组字典树AC⾃动机
递归实现双数组字典树AC⾃动机普通AC⾃动机的递归实现过程void build_ac(Node *node) {/* 根节点的⽗亲 == NULL */ if (node == NULL) return ;//递归出⼝:当node为空,返回./* 因为该递归思想是深度优先搜索进⾏ac⾃动机的创建,且ac⾃动机的失败指针在建⽴的过程中必须得先将⽗亲节点的失败指针确定好后才可建⽴孩⼦节点...原创 2019-02-22 15:04:38 · 222 阅读 · 0 评论 -
【练习题】二分法
传统二分特点:在一个有序、无重复元素的数组中找出某个关键字二分查找步骤:循环的条件是:left <= right1、用三个指针left、mid、right分别指向数组头、中间、尾。left与right之间是待查找区2、在待查找区间中,如果数组中间位置mid指向的值等于目标值,则表示已找到目标值3、 否则: ①. 如果数组中间位置mid指向的值小于目标值,则更新待查找区的...原创 2019-03-15 14:35:00 · 1166 阅读 · 0 评论