Day 17------C语言收尾之链表的删除、位运算、预处理、宏定义

链表

空链表:

注意:函数不能返回局部变量的地址

操作:

1.创建空链表

2.头插

3.尾插

4.链表遍历

5.链表的长度

free:释放

删除:

头删

void  popFront(struct Node *head)

{

     //1.p指针变量指向首节点

     //2.断开链表
     head->next = p->next;

      //3.释放p所在的节点
       free (p);

}

  void popFront (struct Node *head)    //头删函数{if(isPuanduan(head==0)){struct Node *p = head->next;      //定义一个结构体指针指向首节点head->next = p->next;    //将下一个节点的地址给到头结点的指针域free(p);}}

尾删:

void popBake(struct Node *head)

{

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

}

void popBake (struct Node *head)        //尾删函数
{if (isPuanduan(head)==0)       {                                struct Node *p = head;      //定义一个结构体指针指向首节点while (p->next->next != NULL)      //判断这个链表的指针域的下个指针域是否为空{p = p->next;                //不是继续指向下一个}free(p->next);         //删除尾节点p->next = NULL;         //给现在指的节点的指针域为空}
}

位运算

位运算——0  1

用途

1、控制硬件,硬件的操作,往往都是操作对应的寄存器的位来实现的。

2、操作系统的某些文件信息的存储,通常也是用位来描述的。
比如: ls -l命令看到的关于文件的一些信息

3、许多压缩和加密操作都是直接处理的单独的位。

运算说明

& --- 有一个位为0,则结果为0,只有两个位都为1时,结果才为1

   //逻辑运算中的规则:一假则假

l---有一个位为1,则结果为1 ,只有两个位都为0时,结果才为0

     //逻辑运算中的规则:一真则真
 ~--- 0,1相反/逻辑运算中的规则:一假则假

^ ---相同为0相异为1  
                   //同假异真
<<-----左移运算      数值<<位数  左移一次相当于乘二

>>-----右移运算     数值>>位数    

偶数位置0:

#include <stdio.h>int main (void)
{int a = 0xffffffff;int i = 0;while(i<32){i+=2;a = a&(~(1<<i));}printf ("%#x\n",a);return 0;
}

基数位置1:

#include <stdio.h>int main (void)
{int a = 0x55555555;int i = 0;while (i<32){i++;if (i%2 != 0){a = a | (1<<i);}}printf("%#x\n",a);return 0;
}

异或运算:

  //同假异真
   int a = 0x33;
   a ^ 0x55;
   
   0011 0011
   0101 0101 ^
   ----------
   0110 0110 //0x66
 
<<  
   数值<<位数 

   int a = 0x33;
   a<<1
   0110 0110
    6    6  //左移一位相当于乘以2 
>> 

右移:较为特殊

注意:看数据类型  有符号类型的数据,此时右移,最高位补符号  //算数右移

                                无符号类型数据                        默认补零          //逻辑右移

统计int类型中1的个数

int a = 1213; //二进制中1的个数 

#include <stdio.h>int main (void)
{unsigned int a = 1213;int i = 0;int cat=0;for (i = 0;i<32;++i){if(a>>i & 1){cat++;}}printf ("%d\n",cat);return 0;
}

预处理

不是c语言的一部分

编译过程的一部分

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

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

 . c———>可执行文件的过程

#include <stdio.h>
#define Pi 3.1415926
#define Max(a,b) (a)>(b)?(a):(b)int main (void)
{
#if 0float s = 0;float r = 6;float C = 0;scanf ("%f",&r);printf ("s = %.2f   C = %.2f\n",Pi*r*r,2*Pi*r);
#endifint a=0;int b=0;scanf("%d%d",&a,&b);printf ("Max = %d\n",Max(a,b));return 0;
}

宏定义

#define   宏名

预处理过程:文本的原样替换

 带参宏:
       文本替换 --- 有可能导致,
       源代码的体积变大 。
       快 --预处理阶段干 
       编译之后,对应的代码就已经在可执行代码中了
 函数:
       调用 ---- 只有一份代码
       会有时空开销。

 可以选择带参宏,功能小,代码量少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448525.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BeanDefinitionReader学习

Spring版本5.1.0 Spring中的BeanDefinitionReader是一个接口&#xff0c;用于读取BeanDefinition并将其注册到Spring容器中。BeanDefinitionReader的主要作用是从资源文件中读取配置信息&#xff0c;并将其转换为BeanDefinition对象&#xff0c;然后将其注册到Spring容器中。B…

springboot完成一个线上图片存放地址+实现前后端上传图片+回显

1.路径 注意路径 2.代码&#xff1a;&#xff08;那个imagePath没什么用&#xff0c;懒的删了&#xff09;&#xff0c;注意你的本地文件夹要有图片&#xff0c;才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…

【云手机】快速获取一台属于你的云手机,在云上调试你的应用!

0x00 前言 随着科技的飞速发展&#xff0c;云手机已然成为一种云端虚拟商品&#xff0c;它打破地域限制&#xff0c;让你随时随地畅享移动体验。红手指、小鱼云手机等平台虽便捷易用&#xff0c;却在可扩展性和隐私性方面有所欠缺。冗长的《隐私政策》是否让你望而却步&#x…

LabVIEW潜油电泵数据采集系统

LabVIEW潜油电泵数据采集系统 介绍一个基于LabVIEW的潜油电泵数据采集系统。该系统目的是通过高效的数据采集和处理&#xff0c;提高潜油电泵的性能监控和故障诊断能力。 系统由硬件和软件两部分组成。硬件部分主要包括数据采集卡、传感器和电泵等&#xff0c;而软件部分则是…

网络开启代理之后git还是连接超时

网络开启代理之后git还是连接超时 当电脑开启网络代理之后&#xff0c;浏览器能够正常访问GitHub&#xff0c;可是使用git拉取仓库时还是超时。 问题 $ git clone https://github.com/xxx/notes.git Cloning into notes... fatal: unable to access https://github.com/xxx/…

ARM架构可视化ROS消息方案部署

ARM架构可视化ROS消息方案部署 三种方案, 1. webviz 2. foxglove 3. rosviz 注: web要用firefox, chromimum用不了, 可能是因为取消了时间同步机制的原因 先说三种方案的优劣, webviz 延迟比较高, 但是部署相对简单, foxglove 部署比较费劲, 但是效果不错, 延迟低, 本文会尽…

KMP算法解决——找出字符串中第一个匹配项的下标(深入图解KMP算法)

"The only way to do great work is to love what you do." ​- Steve Jobs 首先我们先来回顾一下题目&#xff1a; 1. 先正儿八经的拿比较官方的说法来解释一下KMP算法 KMP&#xff08;Knuth-Morris-Pratt&#xff09;算法是一种用于在一个文本串中查找一个模式串…

睿尔曼超轻量仿人机械臂—外置按钮盒使用说明

睿尔曼RM系列机械臂的控制方式有很多种&#xff0c;包括&#xff1a;示教器、JSON、API等。在此为大家介绍外置按钮盒的使用方法。 按钮盒接线安装 按钮盒外观如下图所示&#xff0c;有&#xff1a;急停、暂停、开始、继续。四个功能按钮。用户可通过这四个按钮来实现对机械臂运…

OpenCV 14 - 自定义线性滤波

1 卷积 1-1概念 卷积是图像处理中一个操作,kernel在图像的每个像素上的操作。 Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点 1-2 卷积如何工作 把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。 …

2024年美赛E题:财产保险的可持续性 Sustainability of Property Insurance 思路模型代码解析

2024年美赛E题&#xff1a;财产保险的可持续性 Sustainability of Property Insurance 思路模型代码解析 【点击最下方群名片&#xff0c;加入群聊&#xff0c;获取更多思路与代码哦~】 问题翻译 极端天气事件对房产所有者和保险公司已经成为一场危机。近年来&#xff0c;世界…

Springboot集成graylog快速入门demo

一、graylog介绍 GrayLog是一个轻量型的分布式日志管理平台&#xff0c;一个开源的日志聚合、分析、审计、展示和预警工具。在功能上来说&#xff0c;和ELK类似&#xff0c;但又比ELK要简单轻量许多。依靠着更加简洁&#xff0c;高效&#xff0c;部署使用简单的优势很快受到许多…

10个React状态管理库推荐

本文将为您推荐十款实用的React状态管理库&#xff0c;帮助您打造出高效、可维护的前端应用。让我们一起看看这些库的魅力所在&#xff01; 在前端开发中&#xff0c;状态管理是至关重要的一环。React作为一款流行的前端框架&#xff0c;其强大的状态管理功能备受开发者青睐。…