数据结构个人笔记
jinghang2000
这个作者很懒,什么都没留下…
展开
-
JAVA-数据结构-哈希表-附leetcode
JAVA-数据结构-哈希表-附leetcode 1.简介 哈希表也叫散列表 键值对 key -> value eg: 2019141022318 -> 张三 时间复杂度 访问 不存在 搜索 O(1) 插入 O(1) 删除 O(1) (碰撞 O(k) ) 2.JAVA 哈希表基本操作 public static void main(String[] args) { // 创建哈希表 String[] hashTable =原创 2022-03-21 21:04:40 · 873 阅读 · 0 评论 -
JAVA-数据结构-队列-附leetcode
队列自学笔记原创 2022-03-14 20:39:13 · 455 阅读 · 0 评论 -
JAVA-数据结构-数组-附leetcode
数据结构个人笔记原创 2022-03-13 20:33:15 · 1706 阅读 · 0 评论 -
JAVA-数据结构-链表-附leetcode
个人笔记原创 2022-03-13 20:31:09 · 1308 阅读 · 0 评论 -
栈的应用——递归
void main(){ int a,b,c; func1(a,b); c=a+b; } void func1(int a, int b){ int x; func2(x); x=x+100; } void func2(int x){ int m,n; } 1.函数调用的特点:最后调用的函数是最先执行结束的(LIFO) 2.函数调用时,需要用一个栈来存储: 调用返回地址、实参、局部变量 main函数一层一层压下去 3.适合递归解决的.原创 2021-12-31 17:55:24 · 1071 阅读 · 0 评论 -
栈的应用——括号、前缀后缀表达式
1.括号匹配问题 (((()))) ()()(()) 最后出现的左括号会最先匹配(LIFO)所有括号都可以两两配对。 每出现一个右括号,就消耗一个左括号,出栈操作 遇到左括号就入栈,遇到右括号就“消耗”一个左括号出栈。 ...原创 2021-12-31 16:42:08 · 804 阅读 · 0 评论 -
数据结构——队列
1.定义: 队列也是一种特殊的线性表(只允许在一端进行插入,在另一端删除的线性表) 现实例子:打饭排队 相关术语: 空队列:没有任何数据元素的队列 队头:允许删除的一端 队尾:允许插入的一端 2.特点: 先进先出(FIFO first in first out) 3.队列的基本操作: 4.队列的顺序实现: #define MaxSize 10 typedef struct{ int data[MaxSize]; i...原创 2021-12-30 21:30:16 · 647 阅读 · 0 评论 -
栈(stack)
1.定义: 栈(stack)一种特殊(只允许在一端进行插入或删除操作)的线性表。 现实例子:一摞盘子只能在盘子最上面操作,烤串,羽毛球盒放取羽毛球,都只能在顶部 2.栈的术语 栈顶:允许进行插入删除的一端 栈底:不允许进行插入删除的一端 3.栈的特点: 后进先出(Last in First Out) (给进栈顺序,选合法出栈顺序) 4.栈的基本操作: 5.顺序栈 //顺序栈 #define MaxSize 10 typedef struct{ int data[MaxS.原创 2021-12-30 16:59:35 · 678 阅读 · 0 评论 -
顺序表和链表对比
逻辑结构上:都是线性结构,线性表 存储结构上: 优点 缺点 顺序表 支持随机存取、 存储密度高 大片连续空间分配不方便 改变容量不方便 链表 离散的小空间分配方便 改变容量方便 不可随机存取 存储密度低 基本操作: 1.创建 顺序表:需要预分配大片连续空间 (分配空间小,则之后不方便扩展容量,分配空间大,则浪费内存空间) 链表:只需分配一个头节点(甚至原创 2021-12-30 15:59:57 · 265 阅读 · 0 评论 -
单链表大全
一.单链表的定义 1.什么是单链表: 每个节点除了存储数据元素,还要存储指向下一个节点的指针 (优点:不要求大片连续空间,改变容量方便 缺点:不可随机存储,要消耗一定空间存放指针) 2.代码定义一个单链表 #include <stdio.h> //不带头节点 写代码更麻烦 typedef struct LNode { int data; //数据域 可以用其他数据类型 struct LNode *next; }LNode, *LinkList; //LinkList原创 2021-12-29 16:03:23 · 355 阅读 · 0 评论 -
顺序表的查找
//静态查找 非常简单 int GetElem(SqList L, int i){ return L.data[i-1]; } //动态 按位查找 O(1) int GetElem(SeqList L,int i){ return L.data[i-1];//每次取几个字节与指针类型有关 } //动态 按值查找 int LocateElem(SeqList L,int e){ for(int i=0; i<L.length; i++) ...原创 2021-12-26 18:33:53 · 226 阅读 · 0 评论 -
顺序表的实现——动态分配
//顺序表的实现——动态分配 #include <malloc.h> #define InitSize 10 typedef struct { int *data; int MaxSize; int length; }SeqList; void InitList(SeqList &L){ L.data =(int*)malloc(InitSize*sizeof(int)); L.length =0; L.MaxSize=InitSize;.原创 2021-12-26 16:36:07 · 124 阅读 · 0 评论 -
顺序表插入和删除
#define MaxSize 10 #include <stdio.h> typedef struct { int data[MaxSize]; int length; }SqList; //在L的位序i 插入元素e //void ListInsert(SqList &L, int i, int e){ // //i的合法值 [1,length+1] // for(int j=L.length; j>=i; j--) //将i个元素之后的元素后移 /.原创 2021-11-13 19:38:04 · 1094 阅读 · 0 评论 -
顺序表的定义
1.顺序表的定义 顺序表——用顺序存储的方式实现线性表顺序存储 eg: A1-A2-A3-A4-A5 如果第一个位置是location(L),那么第二个就是location(L)+数据元素大小 [sizeof(ElemType)可以查看数据元素大小] 2.顺序表的实现——静态分配 #define MaxSize 10 //定义最大长度 typedef struct { ElemType data[MaxSize]; //ElemType是数据类型 实际用可以换成int stru原创 2021-11-13 15:11:53 · 5186 阅读 · 0 评论 -
线性表定义基本操作1
线性表的定义: 特点: 1. int 都int , struct 都 struct 2. 序列 有次序 3. 有限 注意: a i是线性表的位序 a1表头 a n表尾 中间元素都有前驱和后继 线性表操作: (对数据结构基本操作 创销 增删改查 改第一步是查,可以根据具体需求改的操作) (没有给出具体参数类型,函数名和参数名也都可以改,但是要有可读性) (& 对参数结果需要带回来,需要&,如下图 上图修改结果没有带回 test内x是另一个 上...原创 2021-12-26 14:30:59 · 277 阅读 · 0 评论 -
空间复杂度
无论问题规模怎么变,算法运行内存空间都是固定的常量,算法空间复杂度S(n)=O(1) 即算法原地工作。 eg: #include <stdio.h> void LoveYou(int n){ //n为问题规模 int i = 1; //1 while (i<=n) { i++;//1 printf("Happy!",i); } printf("Happy to you!",n); } 有的与问题规模有关 ..原创 2021-12-26 14:09:29 · 447 阅读 · 0 评论 -
算法时间复杂度
1.为什么不能让算法先运行,再事后统计时间? 1.1 机器性能不同 超算和单片机 1.2 编程语言效率不同 C Python 1.3 编译程序产生的机器指令质量有关 1.4有些算法无法事后统计,比如:导弹系统原创 2021-12-25 21:15:23 · 503 阅读 · 0 评论 -
数据结构——算法绪论
程序=数据结构+算法 数据结构——现实问题信息化 算法——处理信息解决实际问题 算法特性: 1.有穷性:有穷步+有穷时间 算法有穷,程序可以无穷 2.确定性: 相同输入产生相同输出 3.可行性: 能够用现有基本运算实现 4.输入: 算法有零个或多个输入 输入取自于特定对象集合 5.输出 算法有一个或多个输出 输出与输入有特定关系 好算法的特质: 1.正确性:算法应该正确解决求解问题 2.可读性:帮助他人理解(算法可以用伪代码,甚至文字表示,重要是无歧义) 3.健壮性:输原创 2021-12-25 19:53:14 · 243 阅读 · 0 评论 -
数据结构引言:
1.数据结构目的: 如何用程序代码把现实世界问题信息化 如何用计算机高效地处理信息从而创造价值。 EG: 记录一个用户金钱数据——浮点型变量 排队——数组 微博用户——? 2.为什么学? 人类文明——农业革命-工业革命-信息革命 3.数据: 数据是信息的载体,是描述客观事物属性的数,字符 及所有能输入到计算机中并被计算机程序识别和处理的符号的集合, 数据是计算机程序加工的原料。 4.数据元素: 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素由若干数据项组..原创 2021-12-25 19:33:36 · 416 阅读 · 0 评论