链表的删除和预处理

创建空链表:
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"
"" 先在当前目录下寻找,若没有再到默认目录下寻找。
 

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

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

相关文章

各大厂急招鸿蒙开发员,争抢鸿蒙工程师

余承东宣布鸿蒙原生应用全面启动&#xff0c;华为开始了全面抛弃安卓的进程。 多家互联网公司也发布了鸿蒙OS的App开发工程师的岗位&#xff0c;开启了抢人大战。 有的企业开出了近百万的年薪招聘鸿蒙OS工程师&#xff0c;而华为甚至为鸿蒙OS资深架构师开出了100万-160万元的…

SASS 官方文档速通

前言&#xff1a;参考 Sass 中文网。 一. 特色功能 Sass 是一款强化 CSS 的辅助工具&#xff0c;在 CSS 语法的基础上增加了变量、嵌套、混合、导入等高级功能。有助于组织管理样式文件&#xff0c;更高效地开发项目。 二. 语法格式 .scss 拓展名&#xff1a;在 CSS3 语法的基…

二分图板子

原理&#xff1a; 匈牙利算法&#xff1a;二分图最大权匹配 - OI Wiki 简单说就是挨个找&#xff0c;找到就退出。后面的来了就让前面的挪位置。 板子&#xff1a; book指给u找位置时&#xff0c;有人考虑过的位置就不考虑了。 match[ i ]就是i位置对应的人。 e是关系 …

k8s helm安装Tiller出错解决

安装Helm 安装Helm通常使用一下命令&#xff1a; [rootk8s-master ~]# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent …

Kotlin快速入门系列10

Kotlin的委托 委托模式是常见的设计模式之一。在委托模式中&#xff0c;有两个对象参与处理同一个请求&#xff0c;接受请求的对象将请求委托给另一个对象来处理。与Java一样&#xff0c;Kotlin也支持委托模式&#xff0c;通过关键字by。 类委托 类的委托即一个类中定义的方…

Mysql-ReadView + MVCC-RR 与 RC

实验准备 创建脚本 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,age int(11) NULL DEFAULT NULL,addr varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY …

1967 - 输出字符的ascii码

题目 从键盘读入一个字符&#xff0c;请计算并输出该字符的 ascii 码。 比如&#xff1a;字符 A 的 ascii 码输出是 65 &#xff0c;a 的 ascii 码输出是 97 &#xff0c;0 的ascii码输出是 48 。 输入 一个字符。 输出 一个整数&#xff0c;代表字符对应的 ascii 码。 …

Red Panda Dev C++项目的基本操作

最近在Red Panda Dev C上面编写程序时发现&#xff0c;很多小伙伴都会创建项目。今天我带大家看看如何使用一个项目。 一、项目的创建 创建项目 首先&#xff0c;我们需要创建一个项目。 1、打开Red Panda Dev C。 2、点击 “文件[F]” → “新建[N]” → “项目[P]...”&…

精选70套前端数据可视化大屏

分享70款还不错的前端数据可视化大屏源码 其中包含行业&#xff1a;智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行等&#xff0c;全网最新、最多&#xff0c;最全、最酷、最炫大数据可视化模板。 你可以点击在线预览查看该源码资源的最终展示效果…

新概念英语第二册(50)上

【New words and expressions】生词和短语&#xff08;4&#xff09; ride n. 旅行 excursion n. 远足 conductor n. 售票员 view n. 景色 ★ride n. 旅行&am…

从零搭建Vue3 + Typescript + Pinia + Vite + Tailwind CSS + Element Plus开发脚手架

项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/vue-ts-scaffold 文章目录 前言脚手架技术栈简介vue3TypeScriptPiniaTailwind CSSElement Plusvite 详细步骤Node.js安装创建以 typescript 开发的vue3工程集成Pinia安装pinia修改main.ts创…

正点原子--STM32定时器学习笔记(1)(更新中....)

F1系列基本定时器&#xff08;TIM6 / TIM7&#xff09; 我们的目标是通过TIM6基本定时器定时500ms&#xff0c;让LED0每隔500ms闪一下&#xff01; 思路&#xff1a;使用定时器6&#xff0c;实现500ms产生一次定时器更新中断&#xff0c;在中断里执行“翻转LED0”。 定时器什…

react useCallback(记忆函数)用法

//定义&#xff1a;防止组件重新渲染&#xff0c;导致方法被重新创建&#xff0c;起到缓存作用&#xff0c;只有第二个参数变化&#xff0c;才重新声明一次。 import React, { useCallback, useState } from react const [text,settext] useState(""); export def…

什么是ISO21434网络安全中的风险评估?-亚远景

在ISO 21434标准中&#xff0c;网络安全风险评估是指对汽车网络和相关电子系统进行系统性分析&#xff0c;以识别和评估潜在的网络安全威胁和风险。该过程旨在帮助汽车制造商和供应商在整个开发和运营生命周期中有效管理和缓解与网络安全相关的风险&#xff0c;确保车辆在数字化…

docker容器之consul

一、consul解决了什么问题&#xff1f; 如果后端应用服务器集群节点数量很多&#xff0c;前端负载均衡器配置和管理会很麻烦的问题 &#xff08;负载均衡器的节点配置条目数量会很多&#xff0c;后端节点的网络位置发生了变化还需要修改所有调用这些后端节点的负载均衡器配置等…

【精华文章】戊子仲秋的算法学习笔记汇总

文章目录 前言通用基础算法集合蓝桥杯备赛算法特训算法学习方法 前言 我的算法学习之旅&#xff0c;持续更新中 通用基础算法集合 二分查找 二分查找模板&#xff1a;二分原来这么简单二分题目合集&#xff1a;LeetCode 上六道经典的二分题目 排序算法 快速排序模板&#xf…

Android 12.0 应用中监听系统收到的通知

Android 12.0 通知简介https://blog.csdn.net/Smile_729day/article/details/135502031?spm1001.2014.3001.5502 1. 需求 在系统内置应用中或者在第三方应用中,获取Android系统收到的通知的内容. 2. NotificationListenerService 接口 Android 系统预留了专门的API, 即 No…

Github 2F2【解决】经验帖-PPHub登入

最近在做项目时,Github总是出问题,这是一经验贴 Github 2F2登入问题【无法登入】PPhub 2F2是为了安全,更好的生态 启用 2FA 二十八 (28) 天后,要在使用 GitHub.com 时 2FA 检查 物理安全密钥、Windows Hello 或面容 ID/触控 ID、SMS、GitHub Mobile 都可以作为 2F2 的工…

jenkins 下载插件sentry-cli失败 证书过期

现状 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli 原因是npm原域名停止解析&#xff0c;在访问上面sentry-cli的cdn资源的时候 证书过期无法下载。 解决&#xff1a; 替换证书过期…

代码随想录-动态规划专题

有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 步骤分为以下五步&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含…