算法题
反转链表
206. 反转链表 - 力扣(LeetCode)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(!head)return head;//如果只有一个节点,那么直接返回这个节点
ListNode*cur=head,*pre=nullptr;
while(cur){
ListNode*next=cur->next;//设置下一个节点是cur的下一个节点
cur->next=pre;//将cur与前一个空节点相连接
pre=cur;//pre向后移动到cur
cur=next;//cur向后移动
}
return pre;//遍历结束此时的cur指向空。返回pre
}
};
基础知识
enum类型的作用与用法
枚举是编译阶段的宏,用于定义一组命名的常量值,它可以让数据更简洁,更易读。
枚举型是预处理指令#define的替代。
可以自己设置枚举内的数值
用法:enum 变量名{参数
}
不能存在同名的类型名,不能存在同名的枚举成员
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
C/C++ 中有哪些常见的运算符?
C/C++中的运算符分为,算术运算符,逻辑运算符,关系运算符,位运算符,赋值运算符
算术运算符
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法取商 |
% | 除法取余数 |
++ | 自增 a++先赋值再加加,++a,先加加再赋值 |
-- | 自减 a--先赋值再减减,--a,先减减再赋值 |
逻辑运算符
|| | 或,都为0的时候才会为0 |
&& | 并且,全为1的时候才为1 |
! | 非,遇到0变1,遇1变0 |
关系运算符
== | 判断是否相等 |
!= | 判断是否相等 |
>= <= | 大于等于,小于等于 |
> < | 大于,小于 |
位运算符
& | 与,同1则为1 |
| | 非,同0则为0 |
^ | 异或 |
>> | 右移 |
<< | 左移 |
赋值运算符
+= | 先相加再赋值 |
-= | 先相减再赋值 |
*= | 先相乘再赋值 |
/= | 先取商再赋值 |
%= | 先取余再赋值 |