![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法相关学习笔记
数据结构与算法相关学习笔记
瓜洲大大
这个作者很懒,什么都没留下…
展开
-
1.1数据结构与算法概述
数据结构数据结构定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主储存器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序),而执行相应的操作,对这个操作也叫算法。我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主储存器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素...原创 2019-01-23 21:39:55 · 273 阅读 · 0 评论 -
3.4、递归定义及其应用(汉诺塔)
一、定义 一个函数自己直接或间接的调用自己; PS:通常,当一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要先完成3件事: (1)将所有的实在参数、返回地址等信息传递给被调用函数保存; (2)为被调用函数的局部变量分配存储区; (3)将控制转移到被调函数的入口; 而从被调用函数返回调用函数前,系统也应完成3件工作: (1)保...原创 2019-03-11 14:24:53 · 396 阅读 · 0 评论 -
3.3、循环队列队列算法演示
/*队列算法:入队和出队*/#include <stdio.h>#include <malloc.h>typedef struct Queue{ int * pBase; int front; int rear;}QUEUE;//函数声明参数一般不写void init(QUEUE *);bool en_queue(QUEUE *, int...原创 2019-02-26 17:26:09 · 349 阅读 · 0 评论 -
3.2、队列相关知识
一、队列的定义: 一种可以实现“先进先出”的存储结构;二、队列的分类: 链式队列---用链表实现 删除一个元素在队首(front)(出对),添加一个元素在rear(入队) 静态队列---用数组实现 静态队列通常都必须是循环队列(为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量...原创 2019-02-26 16:14:49 · 219 阅读 · 0 评论 -
3.1、栈的相关知识
1、栈的定义 一种可以实现“先进后出”的存储结构; 栈类似于箱子 栈和堆的主要区别是,内存的分配方式不一样,栈是按照压栈出栈的方式分配内存,实现先进后出的数据结构;堆是按一种叫堆排序的方式分配内存。2、栈的分类 静态栈(内核以数组为存储) 动态栈(内核以链表为存储)3、算法 出栈 压栈4、具体程序演示#inclu...原创 2019-02-25 15:48:58 · 172 阅读 · 0 评论 -
2.2、使用链表的相关程序演示
一、链表的创建和链表遍历算法的演示(要用C++跑,有些写法在C下会报错)#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node { int data; //数据域 struct Node *pNext; //指针域}NODE, *PNODE; ...原创 2019-02-24 20:23:13 · 197 阅读 · 0 评论 -
2.1、链表基本概念
一、离散存储【链表】 链表定义: n个节点离散分配, 彼此通过指针相连, 每个节点最多只有一个 前驱节点和后续节点, 首节点没有前驱节点,尾节点没有后续节点。 专业术语: 首节点:第一个存放有效数据的节点。 尾节点:最后一个存放有效数据的节点。 头结点:没有存放数据或者...原创 2019-02-21 16:28:26 · 232 阅读 · 0 评论 -
1.4连续存储数组的算法演示
1.线性结构:把所有*结点*(类似于数组的元素)用一根直线穿起来。 连续存储【数组】 1.什么叫数组? 元素类型相同,大小相等; 2.数组的优缺点: 优点:数组定义简单,而且访问很方便; 缺点:1.数组中所有元素类型都必须相同; 2.数组大小必...原创 2019-01-25 20:44:21 · 251 阅读 · 2 评论 -
1.3 跨函数使用内存
1>.静态变量不能跨函数使用内存2>.动态内存可以跨函数使用内存 以下C程序为其使用方法举例,无实际意义#include <stdio.h>#include <stdlib.h>struct Student{ int sid; int age;};struct Student * CreateStudent(void);vo...原创 2019-01-25 13:40:16 · 196 阅读 · 0 评论 -
1.2预备知识(链表指针)
## 预备知识 1. **指针** C语言的灵魂 定义 地址: 内存单元的编号 (内存可被CPU直接访问,CPU不可直接访问硬盘) 从0开始的非负整数 范围;O~FFFFFFFF(0 ~ 4G-1) 指针: ...原创 2019-01-24 20:52:13 · 358 阅读 · 1 评论 -
4.1、树的相关知识及二叉树遍历程序的演示
树 一、树定义: 专业定义 1、有且只有一个称为根的节点; 2、有若干个互不相交的子树,这些子树本身也是一棵树。 通俗定义: 1、树是由节点和边(指针域,起连接作用)组成; 2、每个节点只有一个父节点但可以有多个子节点; 3、但有一个节点例...原创 2019-03-23 17:33:12 · 703 阅读 · 0 评论