链表和共用体

一、尾插法

尾插法,注意p已经到最后了,不需要我们在next ,只需要改变他的下一个指向方向,然后修改下一个节点为Null。

二、头删法

头删除操作,需要判断是否为NULL;

三、尾删法 

尾删其实就是要先判断我们删除的那个尾在哪里,实际上是在他的前一个结点的下一个结点,并且下一个节点为NULL的情况下,作为条件。然后我们将找到的倒数的第二个节点,找出之后,删除他的下一个节点,就是所谓的尾节点。最后删除完之后他就是最后一个节点,我们需要给其赋值为NULL。

上述讲的内容都是单向链表。

四、清空

上述用malloc 申请的空间都莫有释放,会造成内存泄漏

所以我们需要全部手动清除

头删效率比较高,在头就删除。

五、共用体

union 共用体(名字首字母大写)(联合)

{

};

在工用体内存空间中,他们占有共同的空间,彼此空间相互重叠,所以最后有效数字是最后一个。

可以这样想,数字,开关都可以控制灯泡,但是只能一个来控制,所以让其占有一段内存就可以。

他们的首地址都是同一个,所以开辟空间的时候都是往前堆。

因此可以通过这个方式也能来判断计算机的大小端。

共用体从c99后,共用体的变量可以作为函数的传参,一般也是作为指针传参。

考题一般这里爱考的是sizeof

结果是4,sizeof按照最大自节,但是还要按照两个字节对齐,因为short 比char大一点。

六、枚举

所有的可能性都举出来。(与整形兼容)

enum 名字(首字母大写)

{

​        里面写所有的可能性(并不是意味着他有七个成员,而是他的取值范围必须是里面的某一个)

};

提高代码的可读性,也可以放在switch语句,他是兼容的。

枚举值的后面的值可以发生改变。

枚举在后面的文件操作,会有用。在c里面,w = 100,在底层里面默认可以兼容,结果最后为100。

七、typedef 定义类型

对已有起别名

typedef  int INT(从此以后INT不再是变量名而是类型名)。

 位运算(所有位运算要操作数的类型是与整形或者整形兼容,或者枚举也可以;但是指针,结构体这些都不可以,不与整形兼容)

  • 按位与是指定位清0
  • i&=j <=>i = i&j
  • 按位或| 指定位置1
  • 按位异或^,指定位反转
  • 取反 单目运算 对所有的数取反
  • <<左移,左移之后,不够补0,可以实现某一位置1,i | (1<< 5)(左移永远都是左移)
  • 右移>> 不够向右补0,右移分为算术右移(有符号,前面补1,也肯能补0;取决于i的正负,正补0,负的补1),逻辑右移(无符号 ,前面补0)

注意

在编程的时候注意给数据类型定义为无符号类型,使之符合我们的要求。

八、应用题
8.1 c语言循环左移

实现32位比特位,能被3整除的比特位,置1。 

8.2 指定位清0

8.3 计算1的个数

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值