0 基于Ubuntu或OpenEuler完成下面的任务(OpenEuler有加分)
1. 选择教材第二章的一节进行编程基础练习(2.10,2.11,2.12,2.13,2.14任选一个)
2. 建立自己的项目目录,包含自己学号信息(如20190100linkedlist),构建项目结构(src, include,bin, lib, docs, test...),然后把相应代码和文档放置到正确位置,用tree命令查看项目结构,提交截图(5分)
3. 进行gcc相关练习(ESc, iso, -I等)提交相关截图(5分)
4. 进行静态库,动态库制作和调用练习,提交相关截图(5分)
5. 进行gdb相关练习,至少包含四种断点的设置,提交相关截图(10分)
6. 编写makefile(5分)

一、二叉树广度优先遍历

Linux C语言编程基础_项目结构

 

广度优先遍历从某个顶点出发,首先访问这个顶点,然后找出这个结点的所有未被访问的邻接点,访问完后再访问这些结点中第一个邻接点的所有结点,重复此方法,直到所有结点都被访问完为止。

 

二叉树的代码如下:

head.h

Linux C语言编程基础_项目结构_02

 

 

BinTree.c

Linux C语言编程基础_结点_03

 

 Linux C语言编程基础_结点_04

 

  LQueue.c

Linux C语言编程基础_静态库_05

 

 Linux C语言编程基础_结点_06

 

 

 main.c

Linux C语言编程基础_动态库_07

 

项目树:

Linux C语言编程基础_动态库_08

 

 

GCC练习:

输入的指令如下:

Linux C语言编程基础_项目结构_09

  产生静态库:

Linux C语言编程基础_动态库_10

 

 结果产生:

Linux C语言编程基础_动态库_11

 

 产生动态库:

Linux C语言编程基础_动态库_12

 

 结果产生:

Linux C语言编程基础_结点_13

 

静态库和动态库的指令过程

Linux C语言编程基础_静态库_14

 

 

GDB测试:

Linux C语言编程基础_二叉树_15

 

 

GDB调试的文件不是.c文件,而是编译过的可执行文件。gcc -g 源文件 -o目标文件

调试过程:

设置函数断点、行断点、临时断点等

Linux C语言编程基础_动态库_16

 

  跟踪测试:

Linux C语言编程基础_静态库_17

 

 变量查看:

Linux C语言编程基础_结点_18

 

 

Makefile文件编写:

Linux C语言编程基础_项目结构_19