随笔分类 -  数据结构和算法(C语言版)

1
语言:C语言,指针使用较多针对常用数据结构
摘要:泛型 定义:不同的存储放式,执行的操作相同 精确定义:同一逻辑结构(例如:链式结构),无论该逻辑结构物理存储是什么样子的,我们都可以对它执行相同的操作 图 广度遍历 深度遍历 哈希表 阅读全文
posted @ 2022-07-01 12:36 夜月明 阅读(26) 评论(0) 推荐(0) 编辑
摘要:排序和查找 排序:暂考虑升序 冒泡排序:外循环定比较次数,内循环依次和后面数对比之后交换位置。 插入排序:第n+1插入前n个,整个前n+1个数有序排列 选择排序:第一个位置从所有的数中选择最小值放入,进行互换,同理第二个位置从剩下的数中选最小互换,依次如此。 快速排序:先找某元素处于第2几位,则数据 阅读全文
posted @ 2022-07-01 12:33 夜月明 阅读(20) 评论(0) 推荐(0) 编辑
摘要:非线性结构 数(硬件的线性来解决实际中的非线性问题) 数 数定义 ​ 专业定义:1. 有且只有一个称为根的节点 ​ 2.有若干个互不相交的子数,这些子数本身也是一颗数 ​ 通俗的定义: ​ 1.树由节点和边组成 ​ 2.每个节点只有一个父节点但有多个字节点 ​ 3.但有一个节点例外,该节点没有父节点 阅读全文
posted @ 2022-07-01 12:33 夜月明 阅读(145) 评论(0) 推荐(0) 编辑
摘要:非线性结构 数(硬件的线性来解决实际中的非线性问题) 数 数定义 ​ 专业定义:1. 有且只有一个称为根的节点 ​ 2.有若干个互不相交的子数,这些子数本身也是一颗数 ​ 通俗的定义: ​ 1.树由节点和边组成 ​ 2.每个节点只有一个父节点但有多个字节点 ​ 3.但有一个节点例外,该节点没有父节点 阅读全文
posted @ 2022-07-01 12:32 夜月明 阅读(187) 评论(0) 推荐(0) 编辑
摘要:栈的应用 循环队列 循环队列程序 # include <stdio.h> typedef struct Queue { int * pBase;//pBase指向数组的指针 int front; int rear; }QUEUE; //函数声明,其中参数可以不写 void init(QUEUE *) 阅读全文
posted @ 2022-07-01 12:31 夜月明 阅读(42) 评论(0) 推荐(0) 编辑
摘要:递归 定义: 一个函数自己直接或间接调用自己 递归满足的三个条件 递归必须得有一个明确的中止条件 该函数所处理的数据规模必须在递减 这个转化必须是可解的 循环和递归的关系: 递归:优点:好理解 缺点:速度慢 ,存储空间大 循环:不易理解,速度快,存储空间小 自调用函数 # include <stdi 阅读全文
posted @ 2022-07-01 12:31 夜月明 阅读(20) 评论(0) 推荐(0) 编辑
摘要:队列 定义:一种可以实现“先进后出”的存储结构 分类: 链式队列 用链表实现 静态队列 用数组实现 静态队列通常必须是循环队列 循环队列的讲解:对队列长度取余来表示指针位置 静态队列为什么必须是循环队列 循环队列需要几个参数来确定 两个参数 两个参数不同场合有不同含义 循环队列各个参数的含义:初学者 阅读全文
posted @ 2022-07-01 12:28 夜月明 阅读(36) 评论(0) 推荐(0) 编辑
摘要:队列 定义:一种可以实现“先进后出”的存储结构 分类: 链式队列 用链表实现 静态队列 用数组实现 静态队列通常必须是循环队列 循环队列的讲解:对队列长度取余来表示指针位置 静态队列为什么必须是循环队列 循环队列需要几个参数来确定 两个参数 两个参数不同场合有不同含义 循环队列各个参数的含义:初学者 阅读全文
posted @ 2022-07-01 12:28 夜月明 阅读(18) 评论(0) 推荐(0) 编辑
摘要:栈(单口先进后出) 静态分配:用栈分配(入栈出栈) 动态分配:用堆分配(堆排序分配内存) 定义: ​ 一种可以实现“先进后出”的储存结构,栈类似于箱子。 分类 ​ 静态栈 ​ 动态栈(链表) 算法 ​ 出栈 ​ 压栈 应用 ​ 函数调用 ​ 中断 ​ 表达式求值 ​ 内存分配 ​ 缓冲处理 ​ 迷宫 阅读全文
posted @ 2022-07-01 12:26 夜月明 阅读(19) 评论(0) 推荐(0) 编辑
摘要:算法学习心得 流程 每个语句功能 试数和测试 反复的敲写直到熟悉(学习清华高一凡一样) 阅读全文
posted @ 2022-07-01 12:25 夜月明 阅读(16) 评论(0) 推荐(0) 编辑
摘要:数据结构复习 狭义 数据结构专门研究数据存储问题 数据的存储包含两个方面:个体的存储 + 个体关系的存储 广义 数据结构既包含数据的存储也包含数据的操作 对数据的操作叫算法 算法 狭义 算法是数据的存储放式密切相关 广义 算法和数据的存储方式无关 泛型的思想 数据结构有几种 线性 连续存储【数组】 阅读全文
posted @ 2022-07-01 12:25 夜月明 阅读(16) 评论(0) 推荐(0) 编辑
摘要:链表算法 遍历 查找 清空 销毁 求长度 排序 删除节点 插入节点 //分配一个临时节点,不存放有效数据的头结点。pHead为指向头结点的指针变量(头指针) PNODE pHead = (PNODE)malloc(sizeof(NODE));//函数内的pHead为局部变量(临时存储) if(NUL 阅读全文
posted @ 2022-07-01 12:24 夜月明 阅读(32) 评论(0) 推荐(0) 编辑
摘要:连续存储数组算法 模块一:线性结构(所有的节点用一跟直线穿起来) 连续存储 [数组] 1.什么叫做数组:元素类型相同,大小相等 2.数组的优缺点: 离散存储 [链表] 线性结构的两种常见应用之一 栈 线性结构的两种常见应用之二 队列 专题:递归 1+2+3+4+...+100的和! # includ 阅读全文
posted @ 2022-07-01 11:43 夜月明 阅读(35) 评论(0) 推荐(0) 编辑
摘要:动态内存分配与释放 关键字:malloc(),功能上只能返回第一个字节的地址 程序例子 # include <stdio.h> { int a[5] = {4, 10, 2, 8, 6}; int len; print("请输入你需要分配的数组的长度:len = "); scanf("%d",len 阅读全文
posted @ 2022-07-01 11:42 夜月明 阅读(44) 评论(0) 推荐(0) 编辑
摘要:跨函数使用内存 # include<stdio.h> int f(); int main(void) { int i = 10; i = f(); print("i = %d\n", i); return 0; } int f() { int j = 20; return j; } Java中的ne 阅读全文
posted @ 2022-07-01 11:42 夜月明 阅读(24) 评论(0) 推荐(0) 编辑
摘要:动态内存分配和释放 # include<stdio.h> int main(void) { double *p; double x = 66.6; p = &x;//x占8个字节 1个字节是8位,1个字节为一个地址 //p里面只存放一个地址,这里为8个地址的首地址 double arr[3] = { 阅读全文
posted @ 2022-07-01 11:41 夜月明 阅读(35) 评论(0) 推荐(0) 编辑
摘要:结构体 什么叫结构体 结构体是用户根据实际需要自己定义的复合数据类型 为什么会出现结构体 为了表示一些复杂的数据,而普通的基本类型变量无法满足要求 如何使用结构体:两种方式 struct Student st = {1000, "zhangsan", 20}; struct Student * ps 阅读全文
posted @ 2022-07-01 11:41 夜月明 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1.内存 基本概念 内存是用用来存储数据的设备。它的存储速度介于寄存器和硬盘之间。 内存是CPU唯一可以访问的大容量的存储设备!所有硬盘中的程序和数据必须调入内存之后方可被CPU执行!注意:CPU不能直接处理硬盘中的数据! 内存的问题是软件开发中最核心的问题之一!如:内存的分配,内存的释放,内存什么 阅读全文
posted @ 2022-07-01 11:39 夜月明 阅读(102) 评论(0) 推荐(0) 编辑
摘要:指针 指针的重要性:指针是C语言的灵魂 地址:内存单元的编号 内存单元编号 从0开始的非负数 范围:0~FFFFFFFF 指针 指针就是地址 指针变量存放内存单元地址的变量 指针的本质是一个操作受限的非负整数 指针分类: 基本类型的指针 指针和数组的关系 # include<stdio.h> int 阅读全文
posted @ 2022-07-01 11:38 夜月明 阅读(16) 评论(0) 推荐(0) 编辑
摘要:数据结构概述 定义: 把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(例如查找和删除)而执行的相应操作,这个操作称为算法。 简化一句:把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存) (严蔚敏、吴伟民 伪算 阅读全文
posted @ 2022-07-01 11:29 夜月明 阅读(60) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示