- 本篇根据各个公司的面试问的常见问题进行总结。 公众号回复“面试”,获取pdf答案 1 变量的声明和定义有什么区别 2 简述#ifdef、#else、#endif和#ifndef的作用 3 写出int 、bool、 float、指针变量与 “零值”比较的if语句 4 结构体可以直接赋值吗 5sizeof和strlen的区别 6 C 语言的... 本篇根据各个公司的面试问的常见问题进行总结。 公众号回复“面试”,获取pdf答案 1 变量的声明和定义有什么区别 2 简述#ifdef、#else、#endif和#ifndef的作用 3 写出int 、bool、 float、指针变量与 “零值”比较的if语句 4 结构体可以直接赋值吗 5sizeof和strlen的区别 6 C 语言的...
- 链表 一、什么是链表 链表是线性表的一种,同顺序表一样,都是最基础的线性表。与顺序表的区别在于使用了不同存储结构实现,顺序表使用顺序存储结构,而链表使用链式存储结构。 链表的实现是通过节点,通常节点包含两个区域,数据域和指针域。数据域用来存储我们的数据,而指针域用来存储下一个节点的指针,而节点之间的联系也是通过指针域来建立的。假如我们用链表存储下列有序数据:a1,... 链表 一、什么是链表 链表是线性表的一种,同顺序表一样,都是最基础的线性表。与顺序表的区别在于使用了不同存储结构实现,顺序表使用顺序存储结构,而链表使用链式存储结构。 链表的实现是通过节点,通常节点包含两个区域,数据域和指针域。数据域用来存储我们的数据,而指针域用来存储下一个节点的指针,而节点之间的联系也是通过指针域来建立的。假如我们用链表存储下列有序数据:a1,...
- 在现实程序中,我们必须检查每个函数调用是否返回错误。由于碰到错误时终止程序执行是个惯例,因此我们可以通过定义包裹函数(wrapper function)来缩短程序的长度。包裹函数执行实际的函数调用,测试其返回值,并在碰到错误时终止进程。 在现实程序中,我们必须检查每个函数调用是否返回错误。由于碰到错误时终止程序执行是个惯例,因此我们可以通过定义包裹函数(wrapper function)来缩短程序的长度。包裹函数执行实际的函数调用,测试其返回值,并在碰到错误时终止进程。
- 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 方法一:计数器方式 先遍历链表,求出链表长度count。倒数第k个节点,就是正数第count-k+1个节点。再次遍历链表,找到该节点,返回数据 方法二:双指针方式 定义两个指针slow和fast,初始都指向第一个节点 初始fast指针先走k步,然后slow指针和fast指针每次各走一步,当fast指针指向空时,slow指针所指向的节 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 方法一:计数器方式 先遍历链表,求出链表长度count。倒数第k个节点,就是正数第count-k+1个节点。再次遍历链表,找到该节点,返回数据 方法二:双指针方式 定义两个指针slow和fast,初始都指向第一个节点 初始fast指针先走k步,然后slow指针和fast指针每次各走一步,当fast指针指向空时,slow指针所指向的节
- 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 方法一:双循环对比法(暴力解法效率较低,不建议采用) 方法二: 双指针法 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 方法一:双循环对比法(暴力解法效率较低,不建议采用) 方法二: 双指针法
- 想要移除链表的指定元素,有两种方式 第一种方式 :删除原链表的指定元素 第二种方式 :创建新链表 尾插不属于指定元素的节点 想要移除链表的指定元素,有两种方式 第一种方式 :删除原链表的指定元素 第二种方式 :创建新链表 尾插不属于指定元素的节点
- 想要求得链表的中间节点,有两种方法,分别是计数器方式和快慢指针方式 计数器方式逻辑简单实现简单,效率低 快慢指针方式对逻辑和细节要求较高,但效率也很高 想要求得链表的中间节点,有两种方法,分别是计数器方式和快慢指针方式 计数器方式逻辑简单实现简单,效率低 快慢指针方式对逻辑和细节要求较高,但效率也很高
- 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题
- 对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。 对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。
- 在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作。当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左(或从最低位到最高位)数的位置。在这种计数方式下,第一位是奇数位,第二位是偶数位,依此类推。 首先,分别取出奇数位和偶数位。 然后,将奇数位和偶数位的位置变换。将奇数位和偶数位合并在一起,完成转换。 在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作。当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左(或从最低位到最高位)数的位置。在这种计数方式下,第一位是奇数位,第二位是偶数位,依此类推。 首先,分别取出奇数位和偶数位。 然后,将奇数位和偶数位的位置变换。将奇数位和偶数位合并在一起,完成转换。
- offsetof宏的作用是获取结构体中某个成员相对于结构体起始地址的偏移量。通过计算成员在结构体中的位置,它提供了一种可移植的方法来确定偏移量。 offsetof宏的作用是获取结构体中某个成员相对于结构体起始地址的偏移量。通过计算成员在结构体中的位置,它提供了一种可移植的方法来确定偏移量。
- strcmp()函数是 C 语言标准库中用于比较两个字符串的一个重要函数,全称为 "string compare"。它位于头文件中 strcmp()函数逐字符地比较两个字符串str1和str2,直到找到它们之间存在差异的字符,或者到达任一字符串的结束符\0。比较基于每个字符的 ASCII 值(对于宽字符字符串,对应的是宽字符集的排序规则)。 strcmp()函数是 C 语言标准库中用于比较两个字符串的一个重要函数,全称为 "string compare"。它位于头文件中 strcmp()函数逐字符地比较两个字符串str1和str2,直到找到它们之间存在差异的字符,或者到达任一字符串的结束符\0。比较基于每个字符的 ASCII 值(对于宽字符字符串,对应的是宽字符集的排序规则)。
- 操作符详解(下) 1.单⽬操作符单⽬操作符有这些: !、++、–、&、、+、-、~ 、sizeof、(类型) 单⽬操作符的特点是只有⼀个操作数,在单⽬操作符中只有&和没有介绍,这2个操作符,我们放在 学习指针的时候讲解。 2.逗号表达式exp1, exp2, exp3, …expN逗号表达式,就是⽤逗号隔开的多个表达式。 逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果... 操作符详解(下) 1.单⽬操作符单⽬操作符有这些: !、++、–、&、、+、-、~ 、sizeof、(类型) 单⽬操作符的特点是只有⼀个操作数,在单⽬操作符中只有&和没有介绍,这2个操作符,我们放在 学习指针的时候讲解。 2.逗号表达式exp1, exp2, exp3, …expN逗号表达式,就是⽤逗号隔开的多个表达式。 逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果...
- 操作符详解(上) 1.操作符的分类• 算术操作符: + 、- 、* 、/ 、%• 移位操作符:<< >>• 位操作符:& | ^• 赋值操作符:= 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^= *• 单⽬操作符: !、++、–、&、、+、-、~ 、sizeof、(类型)• 关系操作符:> 、>= 、< 、<= 、 == 、 !=• 逻辑操作符:... 操作符详解(上) 1.操作符的分类• 算术操作符: + 、- 、* 、/ 、%• 移位操作符:<< >>• 位操作符:& | ^• 赋值操作符:= 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^= *• 单⽬操作符: !、++、–、&、、+、-、~ 、sizeof、(类型)• 关系操作符:> 、>= 、< 、<= 、 == 、 !=• 逻辑操作符:...
- 二叉树 1.树概念及结构 1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每... 二叉树 1.树概念及结构 1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签