介绍 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 前提 必须待查找的序列有序 时间复杂度 O(log2n) 原理 1)确定该期间的中间位置K 2)将查找的值t与array[k]比较,若相 ...
分类:
编程语言 时间:
2020-07-10 17:00:04
阅读次数:
56
概念 解释 线性表 n(n(-N)个具有数据特性相同的数据元素(即同属于一个数据对象的数据元素)的有限序列, n被称为线性表的长度 空表 线性表的长度0的线性表 线性结构的基本特点 1)必存在唯一个被称作“第一个”的数据元素(n>=0) 2)必存在唯一一个被称作“最后一个”的数据元素(n>=0) 3 ...
分类:
其他好文 时间:
2020-07-10 11:43:35
阅读次数:
68
原题链接 来源:剑指offer, Hulu面试题 题意很简单。给定一个单链表,反转这个单链表,返回翻转后的头节点。 方法一 借助栈的性质 要将链表翻转,很容易想到借助栈的后进先出的性质来改变链表的顺序。 将链表节点顺序压入栈中,链表节点全部进栈以后,取栈顶元素作为新链表的头节点,然后将元素不断出栈, ...
分类:
其他好文 时间:
2020-07-10 11:23:11
阅读次数:
75
1. 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。 2.在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。 3. 设I为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。 4.试编写在带头结点的单链表L中删除一个 ...
分类:
其他好文 时间:
2020-07-10 10:13:31
阅读次数:
71
链表总结 链表基础 如何实现一个单链表 #include "bits/stdc++.h" using namespace std; struct MyListNode { int data; MyListNode *next; MyListNode(int left = -1, MyListNode ...
分类:
其他好文 时间:
2020-07-09 22:31:25
阅读次数:
55
一、什么是线性表 线性表是数据的线性结构中的一个,它是我们在一般编程中比较常用的一个结构,其中线性表的定义是:具有相同数据类型的n(n≥0)个元素的有限序列其中n为表长,当n = 0时是一个空表。 二、线性表的特点 (1)在线性表中的元素具有逻辑顺序,每个元素都是按照一定顺序排列的。 (2)表中的每 ...
分类:
其他好文 时间:
2020-07-08 23:12:50
阅读次数:
70
【题目描述】 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2 ...
分类:
其他好文 时间:
2020-07-08 13:44:21
阅读次数:
63
最近复习了线性表,对链表这一部分遗忘最大,所以手动实现一下加深理解,附上C++代码: #include <iostream> using namespace std; typedef struct LNode //定义一个结构体作为链表结构,有指针域和数据 { int data; struct LN ...
分类:
编程语言 时间:
2020-07-07 09:54:52
阅读次数:
88
队列 概念 队列:是限只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 遵循先进先出原则,简称FIFO 线性表 —> 用数组或是链表来实现。 抽象数据类型 队列也有类似线性表的各种操作,不同的是 插入数据只能在队尾进行 删除数据只能在队头进行 实际场景:银行叫号排队 数组模拟队列 思路分析 ...
分类:
其他好文 时间:
2020-07-06 01:02:49
阅读次数:
57
?# 栈与队列 栈 概念 栈:是限定仅在表尾进行插入和删除操作的线性表。 **栈顶(top):**允许插入和删除的一端,即表尾称为栈顶 栈底(bottom):表头称为栈底 栈是LIFO结构,后进先出。 与线性表相比,特殊之处在于 限制了线性表的插入和删除位置,始终在栈顶进行。 所以栈底是固定的,最先 ...
分类:
其他好文 时间:
2020-07-06 01:01:36
阅读次数:
62