主页 > 软件开发  > 

链表的删除和预处理


创建空链表: struct  Node head  -  -  -   创建了头链表,内部不储存数据,地址为null,空间开在栈上(在main函数里创建新的节点,一般都开在堆上)。 函数不能返回局部变量的地址,因为局部变量的空间开在栈上,在函数运行完之后,空间销毁,所以只能返回一个值,不能是地址。

链表操作的复习: 1.创建空链表 2.插入链表  头插入/尾节点 3.链表的遍历 4.链表的长度 头删: free():释放掉malloc开出的空间,注意free不是将空间清零,而是将空间的使用权交给操作系统自由分配。 具体思路

void popFront(struct Node *head) {    //1.p指针变量 指向首节点    //2.断开链表        head->next = p->next;    //3.释放p所在的节点     free(p); }  尾删:

void void popBack(struct Node *head) {    //1.p定位到尾节点的前一个节点     while (p->next->next != NULL)    {      p = p->next;    }        //2.释放 p->next    //3.p所在节点成为了新的尾节点     p->next = NULL;


位运算

0 1 计算机   1Byte --存储单位  1Byte = 8bits

软件控制硬件

编程 -->CPU-->寄存器(位)--硬件关联   

&  : 一假则假       eg: int a = 0x33;     a&0x55。      转为二进制分别为: 0011 0011 ; 0101 0101(一假则假)               得出:0001 0001 //x011

 | :一真则真

~ ; 按位取反

^ 异或:相同为0;不同为一//同假真异

<< 左移:  数值<<位数             eg:a<<1 :    0010 0011    ---->    0100 0110(左移一位,对于十进制x10,对于16进制x2) 若是将a(0xff):1111 1111 第三位清零(从右往左,从0位开始)-----   a &  ~(1<<3)

>> 右移:数值>>位数      注意:看数据类型: 有符号位,右移 最高位补符号位                                   无符号位,右移最高位补0


预处理

#include  #define  N 10 预处理命令:, 都是以 # 开头的  10为值

编辑程序 --vi ,编译程序 --gcc ,运行文件 

gcc的编译过程:

.c --- 机器代码 (0110)

预处理:      把程序中 # 开头的预处理命令 执行了 。形成 --预处理文件 --源代码文件      eg:        gcc -E main.c -o main.i  .i 文件 进行 下一步 :编译: // 编译成汇编文件     gcc -S main.i -o main.s    汇编 //将汇编文件 编译 成 目标文件(机器代码)    gcc -c mian.s -o main.o       链接:      需要与用到相关库函数进行链接 ,生产最终可执行文件。    sqrt     -lm  (math)

预处理: 1.宏定义  2.头文件包含 3.条件编译  1.宏定义   (1).#define N 10         注意:      a. 宏名 --标识符          符合标识符的定义规则。         一般写成大写。      b. 宏对应的值 是一个常量        N = 20;      c. 只是做简单的文本的替换,不做计算       d. 宏的嵌套       e.最后不能写分号,因为分号也会作为宏值一部分,参与到文本的替换中      f.#undef 终止宏的定义         后面的代码不能再用这个宏         (2).带参的宏       形式:       #define 宏名(参数) 宏值      宏展开的副作用(运算将值代入之后,考虑运算),能加括号的都加上 。

2.文件包含   #include <>  ;  #include "" 3.条件编译

eg:  #include <stdio.h>  <> //表示包含的文件,在编译器默认的搜索路径下 。 /usr/include 

找的时候,直接到默认路径下寻找。

#include <test.txt> #include "/usr/include/test.txt" "" 先在当前目录下寻找,若没有再到默认目录下寻找。  

标签:

链表的删除和预处理由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“链表的删除和预处理