V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cjw6
V2EX  ›  程序员

数据结构链表如何学习,真的很头大

  •  
  •   cjw6 · 2018-10-27 15:53:46 +08:00 · 5684 次点击
    这是一个创建于 2220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码看的懂,原理看的懂,要是自己写代码,就是错的 主要是想说一说大家当时是如何度过这个难关的, 还有数据结构在嵌入式是上真的有用吗?

    44 条回复    2018-11-13 08:21:34 +08:00
    gnozix
        1
    gnozix  
       2018-10-27 15:56:50 +08:00
    照着抄几遍了再自己动手写
    AX5N
        2
    AX5N  
       2018-10-27 15:58:07 +08:00
    错的就改到对的为止,写代码不都是这样,这有什么问题吗。一步一步尝试,直到对为止,不然还能怎么样。

    不一定有用,除非你知道你要用来干什么,否则我认为可以不学或者以后再回头学。但如果你是学生,不学你也过不了考试啊。
    minami
        3
    minami  
       2018-10-27 16:04:48 +08:00
    不会写就写注释,写一行注释打一行代码
    minami
        4
    minami  
       2018-10-27 16:06:04 +08:00
    @minami #3 另外数据结构肯定有用的,没库调只能自己写,你做的还是嵌入式
    chashao
        5
    chashao  
       2018-10-27 16:15:09 +08:00 via Android
    试试刷题
    cjw6
        6
    cjw6  
    OP
       2018-10-27 16:16:20 +08:00
    @chashao 只是学习阶段还是,不急着找工作
    cjw6
        7
    cjw6  
    OP
       2018-10-27 16:20:30 +08:00
    @minami 数据结构未来会用在哪里,可以具体说说吗,我现在只是想加强编程的基础能力。以前听别人说,如果不会数据结构,堆栈,做大项目会很吃力的。
    Zchary
        8
    Zchary  
       2018-10-27 16:24:52 +08:00
    原理搞清, 背链表的实现代码, 之后的学习会水到渠成. 毕竟英语不是我们母语,记住了一些例子后容易举一反三
    houzhishi
        9
    houzhishi  
       2018-10-27 16:28:47 +08:00
    抽象的思维还是得需要自己反复的咀嚼吧。
    Linyvhan
        10
    Linyvhan  
       2018-10-27 16:40:30 +08:00
    emmm 刷题.
    AltairT
        11
    AltairT  
       2018-10-27 16:41:25 +08:00
    哇,链表是最基础的好不...不说嵌入式,即使是 web 开发,普通的 crud 用的也少,但是想往上走就要学.
    jzq526
        12
    jzq526  
       2018-10-27 16:53:20 +08:00
    多写几次。我当初看链表时,也感觉能看懂,但一上手就傻眼了,第一次写花了很长时间,主要是用来改各种错误。写完后放置几天再写一次,然后再过几天再写一次。三次的代码都不一样……因为每次重写,理解就加深一点。
    所以我建议你硬着头皮写下去,只要能写对一次,然后再修改一两次,就会理解得比较深入了。
    如果真写不下去了,找本有代码的书,先抄一下
    visonme
        13
    visonme  
       2018-10-27 16:55:31 +08:00
    我能想到的是编码时候太粗心了,没有彻底明白自己写的每一行代码运行的结果,所以才导致这种错误。比如用 C,那么要注意指针操作了,赋值不对或者操作不当,那就是一个连锁反应了。

    多敲几次,多错几次就知道了。


    数据结构肯定是有用的,只是大多数人不会直接的应用或者直接使用的很少,因为此类东西大多数会被封装在底层,而我们大多数工作其实只是一个调用而已~ 自然就感受不到它的存在,算法其实也是同样的。

    对于想在技术上进步的,基本都绕不开~
    yanxijian
        14
    yanxijian  
       2018-10-27 17:02:23 +08:00 via iPhone
    草稿纸上画图
    nicktogo
        15
    nicktogo  
       2018-10-27 17:17:17 +08:00 via iPhone
    知道 c 里的指针的话,应该链表就能理解吧。。。以前只学过 c,还没上数据结构算法,就能直接用链表写代码了。。。
    fugu37
        16
    fugu37  
       2018-10-27 17:24:32 +08:00
    当初是创建一个简单的链表,然后把所有指针的地址都打印出来。。。
    msputup
        17
    msputup  
       2018-10-27 17:25:17 +08:00
    画个图就懂了啊。
    t6attack
        18
    t6attack  
       2018-10-27 17:34:47 +08:00
    基于链表的学生成绩管理系统 or 基于链表的球队信息管理系统,是大学 C 语言课程作业。老师先讲一遍。然后大家分成小组,自己写一遍。然后交作业,接受老师提问,老师给作业打个分,算进期末考试成绩。就这样。
    考完试以后,具体代码怎么写,大家都渐渐忘了。但基本原理能记住。因为原理是小方块画出来的,比较形象。
    链表是计算机世界的基础,所以应用层面的开发中往往接触不到。就像装修店铺接触不到钢筋一样。
    liaokylin
        19
    liaokylin  
       2018-10-27 17:44:38 +08:00 via Android   ❤️ 1
    只有随意写的出来才叫懂原理
    Leigg
        20
    Leigg  
       2018-10-27 17:45:39 +08:00 via iPhone
    抄几遍,写上注释,再背着写
    Yourshell
        21
    Yourshell  
       2018-10-27 17:49:29 +08:00 via iPhone
    那应该是你语言没学好
    liuminghao233
        22
    liuminghao233  
       2018-10-27 17:49:38 +08:00 via iPhone
    语言都不会学什么数据结构
    先把 c 语言学好吧
    msg7086
        23
    msg7086  
       2018-10-27 17:56:11 +08:00
    无他,但手熟尔。
    wingkou
        24
    wingkou  
       2018-10-27 18:35:31 +08:00 via Android
    这不叫懂了,真懂了可以信手拈来...
    misaka19000
        25
    misaka19000  
       2018-10-27 18:58:46 +08:00 via Android
    如果真的花了很大的精力还是不能理解,那么可能真的是不适合干程序员
    cjw6
        26
    cjw6  
    OP
       2018-10-27 22:09:25 +08:00
    @visonme 这个说的和我的状况很像,确实我改注意指针的操作。这确实也是 c 的难点
    cjw6
        27
    cjw6  
    OP
       2018-10-27 22:10:41 +08:00
    @liaokylin 说的有道理,我还是代码不熟
    congeec
        28
    congeec  
       2018-10-27 22:15:38 +08:00
    链表原理简单,写起来就各种小错误,特别是用 C 语言写,多写多熟悉呗
    mrcn
        29
    mrcn  
       2018-10-28 01:04:28 +08:00 via Android
    我用指针写程序各种崩溃……后来我就偷懒用数组模拟链表……
    plqws
        30
    plqws  
       2018-10-28 10:26:55 +08:00 via iPhone
    用自己最熟悉的语言学,其实不是数据结构难,而是语言难。
    xx19941215
        31
    xx19941215  
       2018-10-28 10:47:38 +08:00
    感觉 linked list 不是很难,后面的图啥的比较不容易理解
    em2046
        32
    em2046  
       2018-10-28 11:38:25 +08:00 via iPhone
    画图方便理解
    cjw6
        33
    cjw6  
    OP
       2018-10-28 11:51:40 +08:00
    @mrcn 数组和链表是两种概念,数组是线性的,链表是断续的用指针连接一起的。
    wtdd
        34
    wtdd  
       2018-10-28 12:40:46 +08:00
    趁早改行吧,链表已经是最简单的数据结构之一了,如果这个都头大,后面学 C++得多痛苦……

    以上开玩笑,各种看得懂一写就错,基本上是记忆力问题,而 coding 最需要的就是记忆力,远超其他智商因素

    死记硬背也许是一种解决方案……
    laike9m
        35
    laike9m  
       2018-10-28 12:46:46 +08:00
    大部分人可能都没遇到过这个难关吧。。。
    adminii
        36
    adminii  
       2018-10-28 12:48:45 +08:00
    不然 bug 怎么来的,就是一步一步来的
    Raisu
        37
    Raisu  
       2018-10-28 15:53:27 +08:00 via Android
    自己实现一遍,链表,字典,set,树堆栈这些东西自己实现一遍
    JerryCha
        38
    JerryCha  
       2018-10-28 16:19:16 +08:00   ❤️ 1
    大概明白楼主想说啥,懂的原理,但是亲自实现一堆 bug。把 LeetCode Easy 刷一遍就好了。
    kongkongyzt
        39
    kongkongyzt  
       2018-10-28 23:17:00 +08:00 via Android
    链表已经是很简单的数据结构了,链表觉得有困难的话,后面的树还有各种翻转岂不是会觉得更加难?
    cjw6
        40
    cjw6  
    OP
       2018-10-28 23:20:28 +08:00
    @JerryCha 这个说的我的情况差不多。后来我想了想一下问题原因是是我的代码逻辑分析不太行,还有对自己写的 c 语言每个语句执行功能懂得不够透彻,特别是指针方面。
    lwj871731342
        41
    lwj871731342  
       2018-10-29 09:12:53 +08:00 via Android
    多写就好了
    LxkLxkLxk
        42
    LxkLxkLxk  
       2018-10-29 16:55:27 +08:00
    我也是做嵌入式,等你以后做操作系统相关的时候,数据结构会非常有用。
    学习的话,先画图,然后一点一点的写,别看例子,就自己鼓捣。本质上来说,还是你的逻辑思维能力不够,数据结构恰恰是锻炼你这方面的能力。
    mrcn
        43
    mrcn  
       2018-11-11 09:27:17 +08:00 via Android
    @cjw6 我知道……所以说是模拟的。不过不影响复杂度(貌似是的)

    例如 https://blog.csdn.net/m53931422/article/details/43087279
    cjw6
        44
    cjw6  
    OP
       2018-11-13 08:21:34 +08:00
    @mrcn 我看了,意思是要用数组创建数组值,创建数组位置,类似一列链表,但是感觉自由伸缩性是不如链表的,还有数组元素满了还是要创建多个数组的,多个数组的链接也不是很简单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:11 · PVG 21:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.