c
Jaky_Brown
正在学习的路上
展开
-
先进后出的栈
【代码】先进后出的栈。原创 2023-07-30 23:10:09 · 88 阅读 · 0 评论 -
手撕双向链表
一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环鲜表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后商我们代码实现了就知道了。结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。其根本原因是此处双向链表存在头指针哨兵位,而上次的单链表没有。除了双向的区别,最大的不同在于此处传参是传的一级指针,而上次的。所以说还是有哨兵位的链表更好用。此处双向链表相对于上次写的。原创 2023-07-27 10:19:02 · 74 阅读 · 0 评论 -
线性表之单链表
3、顺序表要求数据从开始位置连续存储那么我们在头部或者中间位置插入删除数据就需要挪动数据,效率不高。2、避免频繁扩容,我们满了基本都是扩2倍可能就会导致一定的空间浪费。1、空间不够了需要增容,增容是要付出代价的。针对顺序表的缺点于是有了链表。原创 2023-03-23 13:39:59 · 128 阅读 · 6 评论 -
数据结构OJ用例
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。链接:https://leetcode.cn/problems/remove-element。你不需要考虑数组中超出新长度后面的元素。原创 2023-02-26 19:17:21 · 153 阅读 · 1 评论 -
线性表之顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字务串…顺序表就是数组,但是再数组的基础上,它还要求数据是连续存储的,不能跳跃间隔。线性表 (inear ist)是n个具有相同特性的数据元素的。原创 2023-02-26 09:37:17 · 49 阅读 · 0 评论 -
算法的复杂度
1.算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。2.时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度(摩尔定律,每18个月半导体晶体管就会翻一倍)。所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2023-02-17 14:35:06 · 269 阅读 · 4 评论 -
一些实用的函数和宏
assert 只在 DEBUG 下生效,在调试结束后,可以通过在 #include 语句之前插入 #define NDEBUG 来禁用 assert 调用。1.如果表达式值为假,那么它先向 stderr 打印错误信息,然后通过调用 abort 来终止程序运行。这个printf不能打印出空格,遇到空格和\0都会停止。显然它的原型定义在头文件中。2.如果表达式值为真,继续运行后面的程序。,可以将其看作是异常处理的高级形势。开始处检验传入的参数的合法性。原创 2023-02-01 05:00:00 · 70 阅读 · 3 评论 -
预编译处理
if!原创 2023-01-31 11:30:07 · 91 阅读 · 2 评论 -
动态内存之柔性数组
3.包含柔性数组成员的结构用malloc()进行动态内存分配,并且分配内存应该大于结构的大小,以适应柔性数组的预期大小。最大的差别很明显就是柔性数组的方式只用了一次动态开辟而第二种方式用了两次,就这个区别对代码的影响就已经非常大了。另外柔性数组方式开辟的空间是连续的,这样内存碎片会更少,对于访问的时间会更少。2.sizeof返回结构内存的大小不包括柔性素组的内存。和第二种方法相比由于柔性数组只开辟了一次,更易于释放。1.结构中柔性数组成员前面必须至少有一个其他成员。原创 2023-01-18 15:43:08 · 76 阅读 · 6 评论 -
自定义数据类型
结构体,联合体,位段.....学习笔记原创 2023-01-12 20:37:00 · 89 阅读 · 2 评论 -
字符串与数组的几种基本删减操作
字符串里删除连续相同的字符。(1)右端字符优先删除。(2)左端字符优先删除。原创 2023-01-03 16:36:31 · 812 阅读 · 0 评论 -
关于输入一段数据并判断大小值的问题
当我输入数据的时候才发现,如果不输入一个负数,直接回车结束他是结束不了的,如下图。用for语句的话就更麻烦一点所以选择while语句。一开始我并没有十分理解这个"其实当时的原题是这样““有啥意思有什么意义。原创 2022-11-09 17:16:18 · 86 阅读 · 0 评论 -
求阶乘之和(二)
两种阶乘求和原创 2022-11-04 20:17:40 · 77 阅读 · 0 评论 -
半分查找法
需要注意的是,这个数组的大小不可以用strlen。而计算字符串的大小使用strlen却会更方便。原创 2022-11-04 19:30:29 · 141 阅读 · 0 评论 -
两端字符移动,向中间汇聚
system (cls)//清空屏幕。Sleep (1000) //休眠一秒。strlen (字符串)//求长度。原创 2022-11-03 22:18:13 · 56 阅读 · 0 评论 -
for语句的有关注意
要使用for语句的第一步是熟悉它的流程图第二注意循环变量定义的位置如图int value=1要放在和第二个for语句相同的代码块内。原创 2022-11-03 13:47:30 · 61 阅读 · 0 评论 -
关于vs清除缓存区的简单操作
vs识别不了#include fflush(stdin);具体原因不知,但是vc++6.0和devc可以。解决方案可以是取走需要内容后面的字符(需要明白输入函数的作用),或者是在需要的部分插入死循环,这里只介绍取走法。liru例如 1只取走一个字符‘\n'如图。编译运行显然是出错了,不让我输入第二次。例如2,取走所需字符后的所有字符。这样就实现了清空输入缓存区的目的了。原创 2022-10-24 21:21:28 · 2035 阅读 · 0 评论 -
简单if while switch语句
还有便是在switch case语句中,case与数字之间必须有空格,否则会出现运行出错。需注意的是在if()的括号内不允许出现类似if(x原创 2022-10-03 20:46:51 · 47 阅读 · 0 评论