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.mzph.cn/news/664283.shtml

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

相关文章

ubuntu22.04 安装部署01:禁用内核更新

一、前言 ubunut22.04系统安装以后&#xff0c;内核更新会导致各种各样的问题&#xff0c;因此锁定初始安装环境特别重要&#xff0c;下面介绍如何锁定内核更新。 二、操作方法 2.1 查看可用内核 dpkg --list | grep linux-image dpkg --list | grep linux-headers dpkg --…

NLP_NLP技术的演进史

文章目录 起源: NLP 的起源可以追溯到阿兰图灵在20 世纪50年代提出的图灵测试。图灵测试的基本思想是&#xff0c;如果一个计算机程序能在自然语言对话中表现得像一个人&#xff0c;那么我们可以说它具有智能。从这里我们可以看出&#xff0c;AI最早的愿景与自然语言处理息息相…

Multisim14.0仿真(四十二)基于74LS183的8位表决器设计

一、74LS183简介&#xff1a; 74LS183是一种4位高速全加器&#xff0c;用于数字电路中的加法运算。74LS183输入端包括两个4位二进制数和一个进位信号&#xff0c;输出端包括1个4位二进制数和一个进位信号。 74LS138具有快速响应、低功耗灯特点&#xff0c;能实现高校的数字匀速…

计算huggingface模型占用硬盘空间的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

ChatGPT的探索与实践-应用篇

这篇文章主要介绍在实际的开发过程当中&#xff0c;如何使用GPT帮助开发&#xff0c;优化流程&#xff0c;文末会介绍如何与618大促实际的业务相结合&#xff0c;来提升应用价值。全是干货&#xff0c;且本文所有代码和脚本都是利用GPT生成的&#xff0c;请放心食用。 场景一&…

哨兵1号回波数据(L0级)提取与SAR成像(全网首发)

本专栏目录:全球SAR卫星大盘点与回波数据处理专栏目录 本文先展示提取出的回波结果,然后使用RD算法进行成像,展示成像结果,最后附上哨兵1号回波提取的MATLAB代码。 1. 回波提取 回波提取得到二维复矩阵数据,对其求模值后绘图如下(横轴为距离向采样点,纵轴为方位向采样…

Linux实验记录:使用vsftpd服务传输文件

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 为了解决在多样复杂的设备之间解决传…

openmax

通过EmptyThisBuffer传递未解码的buffer给component&#xff0c;component收到该命令后会去读取input port buffer中的数据&#xff0c;将其组装为帧之后进行解码&#xff0c;buffer处理完成后会通过EmptyBufferDone通知上层输入使用完成&#xff0c;上层收到命令可以继续送输入…

图解Vue组件通讯【一图胜千言】

Vue的每个组件都有独自的作用域&#xff0c;组件间的数据是无法共享的&#xff0c;但实际开发工作中我们常常需要让组件之间共享数据&#xff0c;今天我们来学习下面三种组件通信方式&#xff1a; 父子组件之间的通信 兄弟组件之间的通信 祖先与后代组件之间的通信 1. 父子组件…

Qt|制作简单的不规则窗体

通常我们用到的对话框基本上都是规则的&#xff0c;在有些特殊情况下&#xff0c;也会使用到不规则窗口&#xff0c;那么该如何实现不规则窗体呢&#xff1f; 在MFC框架下很难实现&#xff0c;应该说是难的都想放弃&#xff0c;但是&#xff0c;Qt框架下提供了一个叫做setMask…

产品经理学习-产品运营《海报制作》

如何策划一款优秀的海报 海报是什么&#xff1f; 是一种将文字和图片结合的信息传递形式&#xff1b;其作用和目的是把想传递给用户的信息高效的传递出去&#xff0c;让用户在极短的时间内产生兴趣&#xff0c;进而产生收藏、分享等行为。 海报的类型&#xff1a; 类型 特点 …

算法:阿里巴巴找黄金宝箱(II)

一、算法描述 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c; 每个箱子上面贴有箱子中藏有金币Q的数量。 从金币数量中选出一个数字集合&#xff0c; 并销毁贴有这些数字的每个箱子&…

BL808 Linux支持WIFI

BL808芯片介绍 BL808是高度集成的AIoT芯片组&#xff0c;具有Wi-Fi/BT/BLE/Zigbee等无线互联单元&#xff0c;包含多个 CPU 以及音频编码译码器、视频编码译码器和 AI 硬件加速器&#xff0c;适用于各种高性能和低功耗应用领域。 外围接口包括 USB2.0、 Ethernet、 SD/MMC、 …

Qt简易的五子棋

五子棋是个简单的小游戏&#xff0c;尝试使用Qt将他做出来&#xff0c;学习时的练习demo。 成果展示 需求分析 五子棋&#xff1a;在棋盘上&#xff0c;黑棋先行&#xff0c;交替下棋&#xff0c;五子练成直线获取胜利。 实现过程 1.棋盘绘制&#xff1a;下棋的第一步肯定是绘制…

JAVA单例模式详解

单例模式 创建型模式提供创建对象的机制,能够提升已有代码的灵活性和复用性 常用的有&#xff1a;单例模式、工厂模式&#xff08;工厂方法和抽象工厂&#xff09;、建造者模式。 不常用的有&#xff1a;原型模式。 1 单例模式介绍 1 ) 定义 单例模式&#xff08;Singlet…

Windows内存管理 - 物理内存概念(Physical Memory Address)

作为windows驱动程序的程序员&#xff0c;需要比普通程序员更多的了解Windows内部的内存管理机制&#xff0c;并在驱动程序中有效地使用内存。在驱动程序编写中&#xff0c;分配和管理内存不能使用熟知的Win32 API函数&#xff0c;取而代之的是DDK提供的高效的内核函数。程序员…

platform总线

1、平台总线模型 平台总线模型是Linux系统虚拟出来的总线&#xff0c;而I2C、SPI等物理总线是真实存在的。 平台总线模型将一个驱动分成两个部分&#xff0c;分别是device.c和driver.c&#xff0c;分别用来描述硬件信息和控制硬件。 平台总线通过字符串比较&#xff0c;将name…

力扣热门100题刷题笔记 - 1.两数之和

力扣热门100题 - 1.两数之和 题目链接&#xff1a;1.两数之和 题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答…

Linux网络状态查看与防火墙管理

网络状态查看 netstat [选项] Netstat是一款命令行工具&#xff0c;用于显示Linux系统中网络的状态信息&#xff0c;可以显示网络连接、路由表、连接的数据统计等信息。 使用 选项 -a&#xff1a;显示所有选项&#xff0c;包括监听和未监听的端口。 -t&#xff1a;仅显示tc…

LLM(4) | Attention Is All You Need 论文粗读

LLM(4) | Attention Is All You Need 论文粗读 文章目录 LLM(4) | Attention Is All You Need 论文粗读1. 目的2. 回顾论文精读的第一遍的步骤3. 标题4. 摘要3. 结论4. 稍微看一下实验的图表5. 稍微看一下方法里的图表Reference 1. 目的 LLM 模型都是 transformer 模型&#x…