嵌入式开发学习日志(数据结构--单链表)Day20

一、gdb调试

(一)一般调试步骤与命令

1、gcc -g (调试版本,内含调试信息与源码;eg:gcc -g main.c linklist.c)

2、gdb a.out(调试可执行文件,eg:gdb ./a.out)

3、b fun.c:36 设置断点,运行到这个位置,程序自动暂停

(b :100 默认停在main.c的100行;

b fun.c : 36 停在fun.c的36行

b 函数名 eg: b InserPosLinkList)

4、r 运行(出现页面要输入则输入)

5、n 执行下一步 步过(如果是函数,直接调用结束)

s 步入自定义函数(系统函数不入)

6、使用p命令,查看变量或指针等数据

(p 变量:显示变量值,eg:p len

p 指针:看地址,eg:p *data)

7、q命令 退出(y)

(二)找段错误(无下断点的地方)

1、gcc -g (加上调试选项-g,eg:gcc main.c linklist.c -g)

2、gdb a.out(调试可执行文件,eg:gdb ./a.out)

3、按 r(run) 直接开始运行

4、重现错误

5、where 找出段错误的位置(出现栈结构信息,从下往上看,找到第一个不是自己写的往后退一个)

eg:#0(第一个不是自己写的,往后退一个)

#1(此处出现段错误)

#2

二、链表的一般操作

1、修改链表中的元素

2、 查找中间值

.3、查找倒数第k个元素;

4、逆序输出

5、尾插入

6、 指定插入

7、销毁链表·

三、顺序表和链表 优缺点

1、存储方式:

顺序表是一段连续的存储单元

链表是逻辑结构连续物理结构(在内存中的表现形式)不连续

2、时间性能

查找 顺序表O(1)

链表 O(n)

插入和删除

顺序表 O(n)

链表 O(1)

3、空间性能

顺序表 需要预先分配空间,大小固定

链表, 不需要预先分配,大小可变,动态分配 数据 + 指针域

4、循环列表

简单的来说,就是将原来单链表中最有一个元素的next指针指向第一个元素或头结

点,链表就成了一个环,头尾相连,就成了循环链表。circultlar linker list.

注意非空表,和空表。多数会加入头结点。

原来结束的条件是 p->next != NULL ------->>>>> p-next != Head

相关推荐
金宗汉3 分钟前
《宇宙递归拓扑学:基于自指性与拓扑流形的无限逼近模型》
大数据·人工智能·笔记·算法·观察者模式
古一|10 分钟前
Vue3中ref与reactive实战指南:使用场景与代码示例
开发语言·javascript·ecmascript
宠友信息21 分钟前
java微服务驱动的社区平台:友猫社区的功能模块与实现逻辑
java·开发语言·微服务
张永清-老清22 分钟前
每周读书与学习->JMeter主要元件详细介绍(一)配置元件
学习·jmeter·性能调优·jmeter性能测试·性能分析·干货分享
驰羽28 分钟前
[GO]golang接口入门:从一个简单示例看懂接口的多态与实现
开发语言·后端·golang
ii_best1 小时前
IOS/ 安卓开发工具按键精灵Sys.GetAppList 函数使用指南:轻松获取设备已安装 APP 列表
android·开发语言·ios·编辑器
王夏奇1 小时前
C++友元函数和友元类!
开发语言·c++
鼾声鼾语1 小时前
grootN1 grootN1.5 gr00t安装方法以及使用(学习)
学习·angular.js·simulink·isaacsim·isaaclab
Full Stack Developme1 小时前
jdk.random 包详解
java·开发语言·python
懒羊羊不懒@1 小时前
Java基础入门
java·开发语言