1.段错误调试方法:
1.按照网上的方法配置Ubuntu,允许生成core文件
2.重新编译代码并加入-g选项(允许进行GDB调试)
3.ulimit -c unlimited
不限制core文件的生成的大小
4.执行代码,复现段错误,产生包含出错信息的core文件(检查core文件是否生成)
5.gdb a.out core
查看段错误产生的位置
bt
查看段错误时的堆栈信息
p 变量名
查看段错误时的变量信息
2.vscode的调试方法
3.单向链表操作:
基本操作:
1.创建
2.销毁
3.插入
4.删除
5.打印
6.修改
7.查询
复杂操作:
1.查找链表中间节点
快慢指针法:使用两个指针,一个快指针每次移动两个节点,一个慢指针每次移动一个节点。当快指针到达链表末尾时,慢指针所指的位置即为链表的中间节点。
2.查找链表倒数第k个节点
快慢指针法:先使用快慢指针找到链表的长度,然后使用快慢指针找到倒数第k个节点。
3.链表的倒置(反转)
- 遍历链表,创建一个新链表,用于存储倒置后的节点。
- 在遍历过程中,将每个节点从原链表中摘除,并添加到新链表的头部。
- 最后,新链表即为倒置后的链表。
4.链表的排序(冒泡排序、选择排序
冒泡排序:比较相邻节点的值,如果顺序错误就交换它们的位置,重复此过程直到链表有序。
选择排序:遍历链表,找到最小(或最大)的节点,将其与链表的第一个节点交换,然后重复此过程,但每次都是从剩余未排序的节点中找到最小(或最大)的节点。
5.已知链表中间某个节点地址,不知道头结点地址,如何删除该节点(移花接木)
6.如何判断一个链表是否有环?环长?环的入口位置?
是否有环:快指针每次走2步,慢指针每次走1步,快慢指针相遇则说明有环
如何计算环长:标记相遇的位置,让指针继续向后走,没走一步计算器自加,走回到标记位置,则计算器值即为环长
如何计算环入口位置:将一个指针从第一个节点向后走,将一个指针从相遇点向后走,两个指针相遇的位置即为环入口的位置