数据结构
zyj8691
机器视觉 C++
展开
-
3.2.2 单链表的读取、插入和删除
1、单链表的读取 算法思路: (1) 声明一个结点 p 指向链表第一个结点(这里是存储数据的第一个节点,不是头结点),初始化 j 从 1 开始; (2) 当 j < i 时,就遍历链表,让 p 的指针向后移动,不断指向下一结点, j 累加 1; (3) 若到链表末尾 p 为空,则说明第 i 个元素不存在; (4) 否则查找成功,返回结点 p 的数据 ...原创 2018-03-07 11:05:07 · 387 阅读 · 0 评论 -
反转链表
/*反转一个单链表。进阶:链表可以迭代或递归地反转。你能否两个都实现一遍?**//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * ...原创 2018-10-05 16:59:15 · 182 阅读 · 0 评论 -
直方图统计(map容器按值排序)
#include <iostream>#include<opencv.hpp>#include <vector>#include<map>#include<algorithm>using namespace std;using namespace cv;typedef pair<int, int> pii;...原创 2018-10-05 16:28:01 · 406 阅读 · 0 评论 -
矩阵乘以矩阵的转置(数组形式表示矩阵)
#include <iostream>using namespace std;int **fun(int init,int rows, int column){ int **A; int **_A; int **result; A = (int**)malloc(rows*sizeof(int*)); for (int i = 0; i &...原创 2018-09-10 13:19:33 · 9525 阅读 · 0 评论 -
4.1.1 栈的链式存储结构及实现
概念栈的链式存储结构,简称为链栈。 由于单链表有头指针,而栈顶指针也是必须的,所以把栈顶放在单链表的头部。另外,因为有了栈顶在头部了,所以单链表中比较常用的头结点也就失去了意义,通常对于链表来说,是不需要头结点的。 链栈的结构代码:typedef struct StackNode{ SElemType data; struct StackNode* next;...原创 2018-03-14 11:12:06 · 294 阅读 · 0 评论 -
3.2.1 单链表的整表创建和删除
创建单链表的过程就是一个动态、生成链表的过程。即从"空表"的初始状态起,依次建立各元素结点,并逐个插入链表。头插法:算法思路:1.声明一结点p和计数器变量i;2.初始化一空链表L;3.让L的头结点的指针指向NULL ,即建立一个带头结点的单链表i;4.循环 : • 生成一新结点赋值给 p; • 随机生成一数字赋值给p的数据域 p->data; • 将p插入到头结点与...原创 2018-03-06 12:34:31 · 311 阅读 · 0 评论 -
3.2.0 线性表的链式存储结构
本文为学习《大话数据结构》所做的笔记,详细可以阅读此书。定义: 为了表示每个数据元素 ai与其直接后继数据元素 ai+1 之间的逻辑关系,对数据元素刮来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置(地址信息)的域称为指针域。 指针域中存储的信息称做指针或链。 这两部分信息组成数据元素 ai的存...原创 2018-03-06 10:26:25 · 161 阅读 · 0 评论 -
4.2.2 队列的链式存储结构及实现
存储结构将队头指针指向链队列的头结点,而队尾指针指向终端结点。 空队列时,front和rear都指向头结点。 链队列的结构为:typedef int QElemType; /* QElemType 类型根据实际情况而定,这里假设为 int */typedef struct QNode/*结点结构*/{ QElemType data; struct QN...原创 2018-03-19 09:53:58 · 229 阅读 · 0 评论 -
3.1.0 线性表的顺序存储结构
相关知识参考《大话数据结构》#include"stdio.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码,如 OK 等 */type...原创 2018-03-05 12:52:11 · 254 阅读 · 0 评论 -
4.1.0 栈的顺序储存结构及实现
栈的存储结构定义/*顺序栈结构*/typedef struct{ SElemType data[MAXSIZE]; int top; /*用于栈顶指针*/}SqStack;栈普通情况、空栈和栈满的情况示意图: 栈的顺序存储结构一一进栈操作逻辑图: /*插入元素e为新的栈顶元素*/Status Push(SqStack *S, SElemT...原创 2018-03-12 12:11:39 · 257 阅读 · 0 评论 -
4.0.0 栈的定义与抽象数据类型
栈的定义栈( stack )是限定仅在表尾进行捕入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶 (top),另一端称为栈底 (bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出 (Last In Filrst Out) 的线性表,简称 LlFO 结构 。 首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线...原创 2018-03-12 09:59:56 · 1401 阅读 · 0 评论 -
4.2.1 队列的顺序存储结构及实现
循环列表我们把队列的这种头尾相接的顺序存储结构称为循环队列。 假溢出现象: 队列满的条件是 (rear+1) % QueueSlze==front。 (取模 “%” 的目的就是为了整合rear与front大小为一个问题)。 通用的计算队列长度公式为:(rear- front + QueueSize) %QueueSize。代码:#define OK 1#define...原创 2018-03-17 14:32:18 · 333 阅读 · 0 评论 -
4.2.0 队列的定义和抽象数据类型
概念队列 ( queue ) 是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出 (First In First Out) 的线性表,简称 FIFO。允许插入的一 端称为队尾,允许删除的一端称为队头。 抽象数据类型ADT 队列 (Queue)Data 同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系 。Operation ...原创 2018-03-17 13:06:56 · 2403 阅读 · 0 评论 -
3.2.3 静态链表
概念用数组描述的链表叫做静态链表,这种描述方法还有起名叫做游标实现法。数组的元素由两个数据域组成,data和cur。数组的每个下标都对应一个data和一个cur。数据域data,用来存放数据 元素,也就是通常我们要处理的数据;而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。 存储结构:#define MAXSIZE 1000 /* 存储空间初始分配量...原创 2018-03-08 10:24:50 · 181 阅读 · 0 评论 -
C++面试 常见手撕代码
1、冒泡排序#include &amp;lt;iostream&amp;gt;using namespace std;void swap(int &amp;amp;a, int &amp;amp;b){ int temp = a; a = b; b = temp;}void sort(int nums[], int num){ for (int i = 0; i &amp;lt; nu原创 2018-10-08 16:04:33 · 3003 阅读 · 0 评论