
数据结构个人笔记
jinghang2000
这个作者很懒,什么都没留下…
展开
-
JAVA-数据结构-哈希表-附leetcode
JAVA-数据结构-哈希表-附leetcode1.简介哈希表也叫散列表键值对 key -> valueeg: 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 · 893 阅读 · 0 评论 -
JAVA-数据结构-队列-附leetcode
队列自学笔记原创 2022-03-14 20:39:13 · 474 阅读 · 0 评论 -
JAVA-数据结构-数组-附leetcode
数据结构个人笔记原创 2022-03-13 20:33:15 · 1724 阅读 · 0 评论 -
JAVA-数据结构-链表-附leetcode
个人笔记原创 2022-03-13 20:31:09 · 1326 阅读 · 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 · 1091 阅读 · 0 评论 -
栈的应用——括号、前缀后缀表达式
1.括号匹配问题(((()))) ()()(())最后出现的左括号会最先匹配(LIFO)所有括号都可以两两配对。每出现一个右括号,就消耗一个左括号,出栈操作遇到左括号就入栈,遇到右括号就“消耗”一个左括号出栈。...原创 2021-12-31 16:42:08 · 831 阅读 · 0 评论 -
数据结构——队列
1.定义:队列也是一种特殊的线性表(只允许在一端进行插入,在另一端删除的线性表)现实例子:打饭排队相关术语:空队列:没有任何数据元素的队列队头:允许删除的一端队尾:允许插入的一端2.特点:先进先出(FIFO first in first out)3.队列的基本操作:4.队列的顺序实现:#define MaxSize 10typedef struct{ int data[MaxSize]; i...原创 2021-12-30 21:30:16 · 657 阅读 · 0 评论 -
栈(stack)
1.定义:栈(stack)一种特殊(只允许在一端进行插入或删除操作)的线性表。现实例子:一摞盘子只能在盘子最上面操作,烤串,羽毛球盒放取羽毛球,都只能在顶部2.栈的术语栈顶:允许进行插入删除的一端栈底:不允许进行插入删除的一端3.栈的特点:后进先出(Last in First Out)(给进栈顺序,选合法出栈顺序)4.栈的基本操作:5.顺序栈//顺序栈#define MaxSize 10typedef struct{ int data[MaxS.原创 2021-12-30 16:59:35 · 749 阅读 · 0 评论 -
顺序表和链表对比
逻辑结构上:都是线性结构,线性表存储结构上: 优点 缺点 顺序表 支持随机存取、 存储密度高 大片连续空间分配不方便 改变容量不方便 链表 离散的小空间分配方便 改变容量方便 不可随机存取 存储密度低 基本操作:1.创建顺序表:需要预分配大片连续空间(分配空间小,则之后不方便扩展容量,分配空间大,则浪费内存空间)链表:只需分配一个头节点(甚至原创 2021-12-30 15:59:57 · 272 阅读 · 0 评论 -
单链表大全
一.单链表的定义1.什么是单链表:每个节点除了存储数据元素,还要存储指向下一个节点的指针(优点:不要求大片连续空间,改变容量方便缺点:不可随机存储,要消耗一定空间存放指针)2.代码定义一个单链表#include <stdio.h>//不带头节点 写代码更麻烦typedef struct LNode{ int data; //数据域 可以用其他数据类型 struct LNode *next;}LNode, *LinkList;//LinkList原创 2021-12-29 16:03:23 · 370 阅读 · 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 · 233 阅读 · 0 评论 -
顺序表的实现——动态分配
//顺序表的实现——动态分配#include <malloc.h>#define InitSize 10typedef 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 · 134 阅读 · 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 · 1107 阅读 · 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 · 5208 阅读 · 0 评论 -
线性表定义基本操作1
线性表的定义:特点:1. int 都int , struct 都 struct2. 序列 有次序3. 有限注意:a i是线性表的位序 a1表头 a n表尾中间元素都有前驱和后继线性表操作:(对数据结构基本操作 创销 增删改查 改第一步是查,可以根据具体需求改的操作)(没有给出具体参数类型,函数名和参数名也都可以改,但是要有可读性)(& 对参数结果需要带回来,需要&,如下图上图修改结果没有带回 test内x是另一个上...原创 2021-12-26 14:30:59 · 280 阅读 · 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 · 454 阅读 · 0 评论 -
算法时间复杂度
1.为什么不能让算法先运行,再事后统计时间?1.1 机器性能不同 超算和单片机1.2 编程语言效率不同 C Python1.3 编译程序产生的机器指令质量有关1.4有些算法无法事后统计,比如:导弹系统原创 2021-12-25 21:15:23 · 517 阅读 · 0 评论 -
数据结构——算法绪论
程序=数据结构+算法数据结构——现实问题信息化算法——处理信息解决实际问题算法特性:1.有穷性:有穷步+有穷时间算法有穷,程序可以无穷2.确定性:相同输入产生相同输出3.可行性:能够用现有基本运算实现4.输入:算法有零个或多个输入 输入取自于特定对象集合5.输出算法有一个或多个输出 输出与输入有特定关系好算法的特质:1.正确性:算法应该正确解决求解问题2.可读性:帮助他人理解(算法可以用伪代码,甚至文字表示,重要是无歧义)3.健壮性:输原创 2021-12-25 19:53:14 · 251 阅读 · 0 评论 -
数据结构引言:
1.数据结构目的:如何用程序代码把现实世界问题信息化如何用计算机高效地处理信息从而创造价值。EG:记录一个用户金钱数据——浮点型变量排队——数组微博用户——?2.为什么学?人类文明——农业革命-工业革命-信息革命3.数据: 数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合,数据是计算机程序加工的原料。4.数据元素:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素由若干数据项组..原创 2021-12-25 19:33:36 · 428 阅读 · 0 评论