本博客是观看b站左程云的课程所做的笔记,如需观看原视频请至b站搜索观看
前置知识:无
建议:本节内容比较初级,会的同学可以直接跳过
1)按值传递、按引用传递
(我不知道为什么如此多的同学会犯这种错误,这完全是语言问题)
2)单链表、双链表的定义
3)根据反转功能,彻底从系统角度解释链表是如何调整的
链表题目在笔试、面试中的意义就是检验coding能力如何
更难的题目会在【必备】课程里讲述
1. 按值传递、按引用传递
按值传递
比如说
void f(a){
a = 10;
}
int a = 0;
f(a);
再次输出a,发现a并没有改变,原因是在 int a = 0时会在栈中开辟一个空间,使得a=10,调用函数的时候会再次开辟一个a’,这个a’和原来的a是独立的,修改a’并不会影响a的值
按引用传递
比如说
void f1(a){
a = null;
}
void f2(a){
a.val = 5;
}
int a = new Number(3)
f1(a)
f2(a)
经过f1(a)后a的值也不会改变,因为创建a时,会在堆中存3,在栈中创建a指向3,传入a时会在栈中创建一个a’也指向3,然后将a’的指向修改为空,对a的指向没有影响
经过f2(a)后a的值会改变,因为f2是将指向的堆中的值改变了,a也会跟着变化
2. 单链表、双链表的定义
单链表
Node{
value;
next Node;
}
通过next Nod