2022.7.9 单向链表&数组优化】的更多相关文章

相比起数组,链表解决了数组不方便移动,插入,删除元素的弊端,但相应的,链表付出了更加大的内存牺牲换来的这些功能的实现. 链表概述 包含单链表,双链表,循环单链表,实际应用中的功能不同,但实现方式都差不多. typedef struct Node {` int data; //数据类型,你可以把int型的data换成任意数据类型,包括结构体struct等复合类型` struct Node *next; //单链表的指针域` } Node,*LinkedList; ` //Node表示结点的类型,L…
01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了一次运算) 所以就不记入底数了,记作 O(logN) 资料: (对数函数 a ≠ 1 O(logN) O(n^2) n+(n-1)+(n-2)+ … 1 = n*(n+1)/2 只关注最高次项n/2社区 n^2/2 O(n^2) 02 线性表基本概念 03 动态数组框架搭建   vector如何动态增长的…
//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> #define N 6 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q; int t; /**********found**********/ p = h->next;/…
前言: 这次介绍基本数据结构的线性表和链表,并用C语言进行编写:建议最开始学数据结构时,用C语言:像栈和队列都可以用这两种数据结构来实现. 一.线性表基本介绍 1 概念: 线性表也就是关系户中最简单的一种关系,一对一. 如:学生学号的集合就是一个线性表. 2 特征: ① 有且只有一个“首元素“. ② 有且只有一个“末元素”. ③ 除“末元素”外,其余元素均有唯一的后继元素. ④ 除“首元素”外,其余元素均有唯一的前驱元素. 3 存储划分: ① 如果把线性表用“顺序存储”,那么就是“顺序表”. ②…
C# 顺序表 非常标准的顺序表结构,等同于C#中的List<T>,但是List<T>在排错查询和数据结构替换上存在缺陷,一些情况会考虑使用自己定义的数据结构 1.优化方向 下表使用冒泡排序,可以考虑优化算法 /*************************************** 作者: 未闻花语 版本: v1.5 最后修改时间: 2018/05/18 电话: 159****7727 功能&使用方法: * 泛型顺序表 [Update] * 1.新增了预扩容功能 (新…
Object-C 作为C 的包装语言(运行时.消息机制).如果不熟悉C 的话实在玩得太肤浅. 随便深入oc 内部都会接触到C. runtime .GCD.Block.消息机制... 所有强大的功能无不用的 包装体(struct 结构体).使用GCC/Clang (可以google 下.Clang 比GCC 更优化,) 编译指令. 转换OC 为 C . 终端 使用Clang 命令参考 clang -rewrite-objc file.m 查看file.cpp 文件为编译转换的C 单向链表 创建 .…
白杨 http://baiy.cn 在我几年前开始写<C++编码规范与指导>一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :-). 还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准.想要做到这点,就必须要了解语言中每个特性的实现方式及其时空开销.异常处理由于涉及大量底层内容,向来是 C++ 各种高级机制中较难理解和透彻掌握的部分.本文将在尽量少引入底层细节的前提下,讨论 C++ 中这一…
0x00 什么是链表 链表可以说是一种最为基础的数据结构了,而单向链表更是基础中的基础.链表是由一组元素以特定的顺序组合或链接在一起的,不同元素之间在逻辑上相邻,但是在物理上并不一定相邻.在维护一组数据集合时,就可以使用链表,这一点和数组很相似.但是,链表有着数组所不具有的优势.一方面,链表在执行插入删除操作时拥有更高的效率:另一方面,链表是在堆区动态的开辟存储空间,而大多数的数据在编译时大小并不能确定,因此这种动态开辟空间的特性也可以说是链表的一个优点. 0x01 链表的应用 多项式计算 滚动…
首先,对于链表来说,我们不能像数组一样直接访问,所以我们想到要求倒数第K个节点首先要知道最后一个节点. 然后从最后一个节点往前数K个. 最后得到想要的值. 但是这是不对的,为什么呢?因为题目给出的是单向链表,只能从前往后找. 所以我们需要换一种思路. 定两个指针. 都从链表的头开始走,一个先走一个后走,先走的比后走的快k步. 然后两个人之后每次都走一步. 当先走的走到终点的时候. 那么后走的所在的位置就是倒数第K个节点的位置了. 下面是代码,这次使用STL库中的list完成. /** *单向链表…
数据结构,一堆数据的存放方式. 今天我们学习数据结构中的 链表: 链表的结构: 链表是一种特殊的数组,它的每个元素称为节点,每个节点包括两个部分: 数据域:存放数据,此部分与数组相同 指针域:存放了下一个节点的地址(单向链表).存放上一个和下一个节点的地址(双向链表) 链表比数组多了指针域,因为链表结构是通过上一个节点的指针域去找下一个数据,比如有一个链表ABCD四个节点,其中A节点是链表的第一个节点,如果我们要访问D节点里边的数据.操作如下: 先通过A节点的指针域找到B节点 再通过B节点的指针…