- 博客(44)
- 收藏
- 关注
原创 Linux---gdb和cgdb
首先我们gcc 生成可执行程序时,默认是release版本,不支持调试,但是在后面加上-g选项,就代表切换到debug版本,就可以调试了,一般用cgdb a.out调试代码,因为cgdb可以看到源码。跟踪显示指定变量的值(每次n或s时),我可以display result,然后在result+=i,位置处打断点,然后每次c,就可以直接跳到这个断点,看到每次循环result的结果。查看当前栈帧的局部变量值,进入Sum函数时就可以在该栈帧看到所有局部变量的值,全局看不到,在main函数也可以。
2025-11-23 20:48:35
910
原创 rand函数----srand函数----time函数
rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的的大小是依赖编译器上实现的,但是大部分编译器上是32767。我们可以看到虽然⼀次运行中产的5个数字是相对随机的,但是下⼀次运行程序生成的结果和上⼀次⼀模⼀样,这就说明有点问题。如果再深入了解⼀下,我们就不难发现,其实rand函数生成的随机数是伪随机的,伪随机数不是真正。真正的随机数的是无法预测下⼀个值是多少的。srand函数是不需要频繁调用的,⼀次运行的程序中调用⼀次就够了,循环也可以。
2025-07-14 14:36:49
596
原创 数据结构----双向链表
另外这个结构虽然结构复杂,但是使⽤代码实现以后会发现结构会带来很多优势,实现反⽽简单了,后⾯我们代码实现了就知道了。带头链表⾥的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这⾥“放哨的”,就像之前链表算法题里我们新创建了个结点,其中不存储任何有效元素,只是用来占位置的。链表大概可以分为这么多种,1.带头(不带头)单向(双向)循环(不循环)链表。虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构:单链表和双向带头循环链表。1.1 在正式讲解双向链表前,我们先来看一下链表的分类。
2025-04-26 22:12:21
489
原创 应用链表的算法题----11道
3. 最后循环比较谁的val值小谁尾插到新链表中,然后让原链表和新链表的指针全部向后走一步,出了循环之后谁不为空谁就把原链表后续的数据全部尾插到新链表中,此时newphead并不是我们新链表中的第一个节点,而是我们申请的占位置的无用节点,所以我们创建个ret指针保存newphead的下一个节点,也是真正有意义的新链表的第一个节点,之后free掉我们所申请的占位置的节点,因为此时这个节点无用了,再把它置为空,防止后续对野指针解引用,最后返回ret,本题结束。返回之后,本题结束。
2025-04-23 22:16:04
1106
原创 数据结构----单链表
1. 当我们想要保存⼀个整型数据时,实际是向操作系统申请了⼀块内存,这个内存不仅要保存整型数据,也需要保存下⼀个结点的地址(当下⼀个结点为空时保存的地址为空)2.4 链表中每个结点都是独⽴申请的(即需要插⼊数据时才去申请⼀块结点的空间),我们需要通过指针变量来保存下⼀个结点位置才能从当前结点找到下⼀个结点。2.2 结点:与顺序表不同的是,链表⾥的每节"⻋厢"都是独⽴申请下来的空间,我们称之为结点。3. 从堆上申请来的空间,是按照⼀定策略分配出来的,每次申请的空间可能连续,可能不连续。
2025-04-16 22:07:45
1026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅