009【入门】单双链表及其反转-堆栈诠释

本博客是观看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的指向没有影响

image.png

经过f2(a)后a的值会改变,因为f2是将指向的堆中的值改变了,a也会跟着变化

image.png

2. 单链表、双链表的定义

单链表

Node{

value;

next Node;

}

通过next Nod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值