Understanding and implementing a Linked List in C and Java

Поділитися
Вставка
  • Опубліковано 23 лис 2024

КОМЕНТАРІ • 421

  • @seasnek7024
    @seasnek7024 4 роки тому +240

    A warning to those who try to write the code as it’s shown: Blink and you’re dead
    Great vid btw cheers

    • @JacobSorber
      @JacobSorber  4 роки тому +33

      Thanks. Yeah, playing back at half speed might help.

    • @sounakguha7571
      @sounakguha7571 4 роки тому +2

      Omg

    • @aniketraj2834
      @aniketraj2834 3 роки тому +3

      Omg weeping angels run and don’t blink!

    • @vladkuprienko7162
      @vladkuprienko7162 3 роки тому

      @@JacobSorber rushing in this case creates tiny mistakes, also it's easier to understand slower line-by-line when first introduced

    • @firstnamelastname8790
      @firstnamelastname8790 3 роки тому +1

      @@JacobSorber I watch in 2x :)

  • @edgar1906
    @edgar1906 4 роки тому +101

    NOW I know what pointers are used for in C!! Can’t imagine all the things you could do with them. That’s amazing! Thank you!

    • @JacobSorber
      @JacobSorber  4 роки тому +12

      I know, right?

    • @atiedebee1020
      @atiedebee1020 3 роки тому +5

      Pointers are also very handy for giving a function a pointer to some big data and you won't be moving as many variables

    • @uwu-pq1om
      @uwu-pq1om 3 роки тому +2

      you can even develop hacking software for games using pointers in c++

  • @brijeshsamal7035
    @brijeshsamal7035 3 роки тому +30

    5 minutes in and the explanation is already so helpful. Edit: After going beyond 5 minutes, the speed of his code isn't very convenient really.

  • @zishiwu7757
    @zishiwu7757 4 роки тому +25

    I'm graduating in May 2021 and preparing for Leetcode and Hackerrank technical interview questions. Jacob, your explanation of how Linked Lists work, and the accompanying C implementation is extremely helpful. I mostly program in garbage collected languages like Python and Java, but after watching re-watching your videos and struggling with my compiler for a while, I feel like I finally understand how Linked Lists are implemented under the hood.

    • @verbisdiablo
      @verbisdiablo Рік тому +3

      Hope you got your job bro

    • @zishiwu7757
      @zishiwu7757 Рік тому +8

      @@verbisdiablo Thank you! Yes I did get the job and really like it so far. I hope you are doing well.

    • @zishiwu7757
      @zishiwu7757 Рік тому +5

      @@verbisdiablo Thanks! Fortunately I did get the job and it's going well so far.

    • @All.In.One-i2m
      @All.In.One-i2m 9 місяців тому

      I gotta be honest all of this is great and all but if you're gonna use linked list a lot then implementing them each time will be such an exhausting and time wasting process so it's better that after you understood how they work that you create functions ready for use when ever you want so that you don't implement time every single time.

  • @a.h.z2830
    @a.h.z2830 4 роки тому +5

    this honestly was the best way to explain the linked lists ,going from the basics and reaching the more complex functionalities ,

    • @JacobSorber
      @JacobSorber  4 роки тому +1

      Thanks. Glad you enjoyed it.

  • @youvebeensubbedto8009
    @youvebeensubbedto8009 4 роки тому +71

    I'm gonna have to watch this at half speed.... very dense with good info :)

    • @neillunavat
      @neillunavat 3 роки тому +1

      Its actually very intuitive...

    • @thengakola6217
      @thengakola6217 3 роки тому +3

      i watched it x2

    • @averagestudent9070
      @averagestudent9070 3 роки тому

      @@thengakola6217 🙇🙇

    • @firstnamelastname8790
      @firstnamelastname8790 3 роки тому +4

      @@neillunavat depending on how much exposure you've had, but hey take the time to feel good about yourself LOL
      post your github, lets see your projects bud

  • @ELMO7TARAMQ8
    @ELMO7TARAMQ8 4 роки тому +6

    Amazing video. I am taking an online programing course and for homework, i got stuck with trying to implement a linked-list in C. I understood the theory, but this video helped me see how to actually use it in code.
    Amazing video. Very smart guy. I had to pause the video and write the code in pen for the first 10 mins until I saw what was happening.
    Thank you very much.

  • @EquuleusPictor
    @EquuleusPictor 2 роки тому +3

    Perfect demonstration that learning to program only in very high level languages such as Java, Python etc will always hide from you the elegant simplicity and beauty of data structures ...

  • @leonardomunoz4850
    @leonardomunoz4850 3 роки тому +2

    I have been coding in Python and Java for a couple years now, but C had always seemed very intimidating. I am glad I found your channel. Thank you

  • @gerdsfargen6687
    @gerdsfargen6687 Рік тому +3

    This Professor is brilliant. I love using your videos Jacob! They really lit up those areas of my brain that needed to grasp C. From a dull glow to a flashing glare! Thanks so much.

  • @Hersonrock12
    @Hersonrock12 10 місяців тому

    First time working with linked lists, this introduction felt really good!

  • @coolbrotherf127
    @coolbrotherf127 Рік тому +7

    One cool trick with linked list and arrays is instead of having a really long array, or a really long list, you have a linked list of pointers to multiple arrays. That way you can easily sort values into arrays without a single one getting too large.

    • @natb007
      @natb007 Рік тому

      That's a trie, isn't it?

  • @mandeath2971
    @mandeath2971 Рік тому

    I love the simplicity and implicity of the content which you created. G bless U

  • @mlk8852
    @mlk8852 4 місяці тому

    Thank you so much! I struggled a lot with this, and you solved all my problems. Thank you for everything, man.

  • @XDjUanZInHO
    @XDjUanZInHO 4 роки тому +1

    Dude THANK YOU. You just made me understand pointers to pointers in a single line with that insert_at_head. I always thought it only served to pass arrays of pointers and chars

  • @juststudy2352
    @juststudy2352 2 роки тому +4

    Thank you so much I really appreciate the effort and patience you put into your videos , I have my exam tomorrow and I was struggling to understand the concept and it's implementation throughout the semester but your explanation came in handy and made things easier for me ; wish me luck 🤞

  • @Helloomadison
    @Helloomadison 2 роки тому

    THE FIRST 30 seconds!! you called me out majorly lol. I was speaking with my prof about some confusion on an assignment (I'm a senior) and he said "well linked lists are something you know already from your intro classes so that part should be easy" I immediately clammed up out of embarrassment and now here I am. Thank you for making this video.

  • @TheCrunchy2
    @TheCrunchy2 5 років тому +3

    I swear, this video better get 500k views at least.. mans explaining with ease

    • @JacobSorber
      @JacobSorber  5 років тому +1

      Thanks, Mauro! I'm glad you liked it.

  • @savantdude
    @savantdude 3 роки тому +1

    probably the only programming tutorial out there that has to be slowed down(playback speed!)

  • @1309CV
    @1309CV 4 роки тому +74

    Your keyboard must be heaven to ASMR listeners.

    • @miner4236
      @miner4236 3 роки тому +1

      makes me anxious af lmao especially when he stops talking, what a disgusting sound xd

  • @karimkohel3240
    @karimkohel3240 5 років тому +15

    "Oh Java i just love your quirks" is my life's motto now

    • @JacobSorber
      @JacobSorber  5 років тому +6

      Glad I could help. It's more positive than some of the other java-inspired life mottos.

  • @averagestudent9070
    @averagestudent9070 3 роки тому

    That sound while typing is super cool!

  • @prashantsawant1028
    @prashantsawant1028 4 роки тому

    Thank you very much for the video. Revised Linked list in 18 min. I have my interview tomorrow.

  • @hannahfrazier2890
    @hannahfrazier2890 4 роки тому

    Honestly this explain is better then my college professors but you code so fast! Thank you for explaining this better!

  • @davidgaspar4772
    @davidgaspar4772 3 роки тому

    Jacob Sorber's contents are just amazing.

  • @lorenzobandinelli2638
    @lorenzobandinelli2638 3 роки тому

    Thank you sooooooo much for providing such a high quality content for free on youtube

  • @chavoyao
    @chavoyao 2 роки тому +3

    The pointer to the first node in the list is passed by value, so you don't need the temporary variable to print the elements in the list.

    • @samkabiru8805
      @samkabiru8805 Рік тому +1

      You are right. I tested it and had the same results

  • @kc2838
    @kc2838 4 роки тому +1

    Please make more videos on data structures. Your videos are very easy to grasp. Thanks.

    • @JacobSorber
      @JacobSorber  4 роки тому +1

      Thanks. I posted one today, and have a few more planned.

  • @s3nt4kuk1
    @s3nt4kuk1 4 роки тому +1

    Thank you. I really like that you understand what you're talking about and it feels like you really enjoy programming, which makes it fun and easy to follow you.

  • @sounakguha7571
    @sounakguha7571 4 роки тому +1

    Hello sir I'm from India.....I get this video by connecting vnp. So that, no video from my location shall not be in the search list......and I found you.....a great teacher.....thank you.....I'm subscribing you

  • @matyasmarkkovacs8336
    @matyasmarkkovacs8336 Рік тому

    You forgot to free up the dynamically allocated nodes.
    The video was really helpful.

  • @chriskorfmann
    @chriskorfmann 3 роки тому +1

    Thank you computer science Matthew McConaughey! This saved me on my project.

  • @jerryxu6859
    @jerryxu6859 2 роки тому

    what an underrated channel, thanks!

  • @LeRoiSoleil61
    @LeRoiSoleil61 4 роки тому +29

    I wish I could learn this much thing every 18 minutes in my life

  • @kbcbala
    @kbcbala 4 роки тому +2

    Simplest and clear singly linked list tutorial, I have seen till now. Cheers.

  • @DragonBallStrike
    @DragonBallStrike 4 роки тому +42

    this is helpful and all but you don't have to fast forward; it makes it really hard to keep up with what you're doing

  • @raphaelchen9960
    @raphaelchen9960 4 роки тому +1

    Thank you so much for making this awesome video, I got confused after going through a three-hour lecture. But this video just helps me solve that confusion within 30 minutes.

  • @AznPrzsn
    @AznPrzsn 4 роки тому +65

    This guy reminds me of my professor. Covers materials at 100 mph, then asks you got it? Understood? Good. Let's move on.
    Me: Wha.....?

    • @JacobSorber
      @JacobSorber  4 роки тому +48

      Nobody spoke up. So, I kept going. :)
      Seriously, I do slow down in person, when I can gauge from student faces how things are sinking in. Fortunately, with UA-cam you can replay and watch it at reduced speed.

    • @AznPrzsn
      @AznPrzsn 4 роки тому +6

      @@JacobSorber haha true that. I do have difficulty understand some other pieces of the code though that weren't explained what it does. But overall I think better to understand than my professor.

  • @musaabmahjoub3244
    @musaabmahjoub3244 Рік тому

    Thank you very much for the wonderful explanation. I would to add a function to free memory after we have used it.
    void free_list(node_t *head)
    {
    node_t *tmp = NULL;
    while (head !=NULL)
    {
    tmp = head; // Store the current head to tmp
    head = head->next; // Move to the next node
    free(tmp); // Free the current node
    }
    }

  • @mmmmonke8085
    @mmmmonke8085 3 роки тому

    HOLY CRAP I LOVE THIS VIDEO THANK YOU. The general concept just did not click in my head bit watching this video made me realise how it works it all makes sense now. Definitely subscribing just for that.

  • @carefree_ladka
    @carefree_ladka 4 роки тому +3

    You're the best man ... Can you please make a video on struct node** head_ref and struct node* head_ref ? I'm just confused with double pointers in linkedlist.

  • @SlowedOutOfExistence
    @SlowedOutOfExistence 5 років тому

    You are a beast at coding man, I'm a student at the school 42, I need to learn this data structure quickly for a project

    • @JacobSorber
      @JacobSorber  5 років тому +2

      Thanks. Make sure you don't just learn it quickly. Learn it well. That way you won't have to learn it again in a month or two. :)
      Best of luck.

  • @DenisPetrovSenior
    @DenisPetrovSenior 5 років тому +5

    Hey, Jacob. Thanks for touching the structures. Tell us about more specific or less used structures as pyramid or quadtree. That would be great.

    • @benjaminshinar9509
      @benjaminshinar9509 5 років тому

      I agree, it can be really nice to have some videos about less common data structures.

  • @KamillaMirabelle
    @KamillaMirabelle 3 роки тому

    I like that you are one of the only I have seen that type at the same speed as me

    • @JacobSorber
      @JacobSorber  3 роки тому +1

      😂

    • @KamillaMirabelle
      @KamillaMirabelle 3 роки тому

      @@JacobSorber I ask if you ever considered using rust instead of c and c++? In a comment on another of your videos. Just interested because i come From a language theory perspectiv so it is fun to hear the what you thought about it.

  • @emmettkjolseth1938
    @emmettkjolseth1938 4 роки тому

    Dude you're awesome. I'm trying to become a cs major and your videos help me out so much!

  • @Ananasbleu
    @Ananasbleu 3 роки тому

    Thank you so much !! I didn't know how to manipulate my *head pointer well to find a node in my list for inst. This was so confusing but now i know better thanks to you :D

    • @JacobSorber
      @JacobSorber  3 роки тому

      You're welcome. Glad I could help.

  • @tiagoperes1631
    @tiagoperes1631 2 роки тому +1

    Your videos are fantastic. Thank you so much for sharing this knowledge in such a didactic way. Hope to be able to buy your course soon! 👏👏👏👏

  • @ApnaTechGurukul
    @ApnaTechGurukul Рік тому

    Thanks, i would be awesome if your channel were there during my college :)

  • @vactum0
    @vactum0 5 років тому +1

    I think this is the simplest program of linked list, Thank you :)

  • @danielburgoa7209
    @danielburgoa7209 Рік тому

    And that's how I understood linked list! Thanks a lot for the clear and concise explanation brother, keep the good work ;)

  • @ujjwalbiswas1953
    @ujjwalbiswas1953 5 років тому

    Simple, informative, easy to understand

  • @amansinghbhadauria2818
    @amansinghbhadauria2818 2 роки тому

    I'll say something & probably will get lambasted, I've been through 10 to 20 tutorials on DSA. I search DSA through C/C++ on UA-cam and hundreds of subpar, half-arsed tutorials of incompetent people ( who possibly don't even know what they're doing ) pops up and it's so annoying because not only you've a problem that require DSA comprehension but now you also have another issue of finding a decent resource. I'm glad I found this channel amid heaps and piles of trash.
    Thank You!

  • @antoinebalaine2061
    @antoinebalaine2061 4 роки тому +1

    Thank you for this awesomely clear tutorial !

  • @screwthisnaming
    @screwthisnaming 4 роки тому +2

    Hairless Matthew McConaughey just taught me a lot about coding. Thanks :3

  • @metaldownm
    @metaldownm 4 роки тому

    I really like the way you explain. Being a C developer and given the fact that linked-lists were uncharted areas for me, i found this really helpful.
    In fact i fixed a bug in a piece of code at work that i had implemented. :)
    It would be really interesting to see free memory malloced for the nodes, once you're finished with linkedLists work.

    • @JacobSorber
      @JacobSorber  4 роки тому

      Thanks. I'm glad it was helpful.
      I don't completely understand your request, though. Are you wanting to see how memory allocators work? Or are you looking for some variant on what I did here with my linked list?

    • @metaldownm
      @metaldownm 4 роки тому

      @@JacobSorber actually a variant. You could show how the allocated memory can be freed, once the work with linkedlist has been completed. I would also typecast those mallocs like (node_t*)malloc since they return void* by default. :-)

  • @afroboi7454
    @afroboi7454 2 роки тому

    8:45 yes, I am indeed enjoying this video😁

  • @mmkvhornet7522
    @mmkvhornet7522 2 роки тому

    thank you very much , your videos are so simple to understand yet so enriched with information and well explained details
    i tried to save a linked list and to save in a binary file then reading it but i struggled a lot if make a video about this topic that would be great !!

  • @gauss8134
    @gauss8134 2 роки тому

    Thank you!! This video helped me so much

  • @saturn52
    @saturn52 4 роки тому

    thanks for explaining all of this so succinctly

  • @Jack_______oh
    @Jack_______oh Рік тому +1

    Thank you for the video. I do have to say the portions where you actually write code are simply too fast for me. I am aware I can pause but I might have to pause every 2 seconds at some parts which gets tedious quickly.

  • @SiMonPhamphaisailam
    @SiMonPhamphaisailam 4 роки тому

    Super effective and just what I need. You are my favourite teacher from now on.

    • @JacobSorber
      @JacobSorber  4 роки тому

      Thanks! Let me know if there are topics you want to hear more about.

  • @B44-y5i
    @B44-y5i 2 роки тому

    i swear to god literally make 3-4 hour long ASMR videos of you just coding whatever with that keyboard guaranteed 2 million views

  • @minamcvinnie4629
    @minamcvinnie4629 4 роки тому

    I have a few questions. Some are probably more nitpicky stylistic preferences, but I'm wondering if there's a specific reason for them:
    * Why do typedef for the struct as a separate statement instead of together with the struct definition?
    * Why did you name it node_t instead of just node?
    * Why use underscores? I thought for compiled languages, CaML case tends to be standard.
    * What is the point of using a pointer to a pointer in some functions, but just a single pointer in others?
    * When you used malloc(sizeof(node_t)) why not cast it as (node_t*)malloc(sizeof(node_t)) ?
    Some of these questions are because after looking up various tutorials online, I seem to get conflicting information.

    • @JacobSorber
      @JacobSorber  4 роки тому +1

      Mostly yes, just stylistic choices. The typedef I did separately, hoping to avoid some confusion from beginner students. As far as coding style, I've seen a lot of different styles over the years in different organizations and companies. Go with whatever style your company wants. As long as you're consisent and your code is readable, I personally don't think it matters much which one you use.

  • @Aziz-jr3kq
    @Aziz-jr3kq 4 роки тому

    the sound of keyboard is awesome

  • @shaunt1309
    @shaunt1309 4 роки тому +2

    This is a great video, very grateful for the efort you put into this.

  • @DuSmh
    @DuSmh 17 днів тому

    that was EXTREMLY HARDDDDDDDDDDDDDDDDDDDDDDDD!!

  • @joannaadamczyk7117
    @joannaadamczyk7117 3 роки тому

    Very good tutorial. Quick but also full of information. I like it that it isn't so slow that you can fall asleep. It motivates to stay in focus. :D

  • @Bingbong420style
    @Bingbong420style Рік тому

    dang your keyboard sounds really good.. Also thanks for the java piece

  • @sinamobasheri3632
    @sinamobasheri3632 3 роки тому +1

    sir i look first 3 minutes of this video and l i love you and yor channel thank for sharing your knowledge 🖤🖤🖤🖤🙏🏻🙏🏻🙏🏻🙏🏻

  • @ProjectPhysX
    @ProjectPhysX 2 роки тому

    In my career as a HPC programmer, I only used a linked list once. That was 8 years ago, before I found out that a simple array is 1000x faster.
    And then I found out that you can get another 100x speedup on GPU with OpenCL.
    As much as I like programming concepts, data structures like linked lists are inefficient nonsense. And sadly most computer science students never learn optimization, so their software runs slow like molasses.

    • @krazyolie
      @krazyolie 2 роки тому

      you need them for interviews.. apparently

  • @prism_schism
    @prism_schism Рік тому

    Awesome explanation! Subscribed!

  • @majusxp18
    @majusxp18 4 роки тому

    Thank you very much, your video helped me a lot

  • @TornadoeJoe
    @TornadoeJoe 4 роки тому

    Very good explanation. Thank you!!!

  • @user-vz8fu6km9u
    @user-vz8fu6km9u 4 місяці тому

    Hi, can you also cover A* search in C? Specifically, how to use a linked list with A* to solve a 4x4 puzzle?

  • @tastypie2276
    @tastypie2276 3 роки тому

    Thank you so much, Sir! That was a great video!!!!

  • @kelwong116
    @kelwong116 2 роки тому

    Thanks for sharing, bro!😄😄

  • @sigmage5345
    @sigmage5345 3 роки тому

    Brilliant tutorial, thanks a lot!

  • @johnd942
    @johnd942 2 місяці тому

    Is it just me, or are others finding the black screen indecipherable?
    For such a self-proclaimed LIST expert, he is certainly oblivious to end users.

  • @mx-trp1307
    @mx-trp1307 2 роки тому

    You do a great job! Thanks.

  • @1309CV
    @1309CV 4 роки тому

    A different approach would be to create a Node constructor and pass in the data there. So you could write something like
    // Node could be static?
    static class Node {
    Node next;
    int data;
    public Node(int data) {
    this.data = data;
    }
    }
    // Part of the Linked List class
    public void add(int data) {
    Node newHead = new Node(data);
    newHead.next = head;
    head = newHead;
    }
    Each their own approach I suppose, this is just another option for anyone who's interested. Learned this approach from a HackerRank video for anyone interested.

    • @JacobSorber
      @JacobSorber  4 роки тому

      Thanks. Yes, having a constructor on the node, and pulling it out of the Linked List class is definitely an option. It really depends on the abstraction you want.

  • @obancium5924
    @obancium5924 3 роки тому

    Great editing on the video, very well done on explaining this concept and presenting this video in a nice format! Thanks mate :)

  • @kakerlakenmilch1155
    @kakerlakenmilch1155 4 роки тому

    love it thanks, could even build trees with this

  • @henryle811
    @henryle811 4 роки тому

    Very nice tutorial

  • @papaulogamerofc946
    @papaulogamerofc946 4 роки тому +1

    I liked your video, but I will suggest you to use StringBuilder instead of concantenating strings in Java.

  • @bobbuilder3748
    @bobbuilder3748 2 роки тому +1

    Linked lists are a good way to learn about the C Preprocessor. Build it once and you never have to write a linked list again.

  • @memeaunt
    @memeaunt 4 місяці тому

    do you have courses with reasonable prices on c language ?
    i like how you explain i understand everything

  • @raphaelandreoni
    @raphaelandreoni 3 роки тому

    Finally I found someone who types almost as fast as me. Not feeling so weird anymore.

  • @rustycherkas8229
    @rustycherkas8229 2 роки тому

    @4:20... Jacob's Ladder 🤣🤣

  • @AhmadAsmndr
    @AhmadAsmndr 2 роки тому

    thank you very much. It is really helpfull

  • @mohanroy1434
    @mohanroy1434 3 роки тому

    very helpful, thanks

  • @iuppiterzeus9663
    @iuppiterzeus9663 4 роки тому

    one of the best videos about linked lists. enjoyed it although i'm not new to this topic. would've liked a little bit big-o-notation though.
    and - some addition to the still outstanding content - i think calling them 'chains' instead of lists would be more intuitive.

  • @lc0414
    @lc0414 5 років тому

    very good video! very easy to understand

  • @briangonzalezamaro3525
    @briangonzalezamaro3525 4 роки тому

    It’s nice seen Cooper safe and sound after went into a worm hole.

    • @JacobSorber
      @JacobSorber  4 роки тому

      It was touch and go there for a while. :)

  • @junrymingo1362
    @junrymingo1362 4 роки тому

    Why does the keyboard sound so satisfying? What's the keyboard anyway?

  • @GeoffHowell-xt8or
    @GeoffHowell-xt8or Рік тому

    Every time you create a new node with malloc, shouldn't you use free to avoid memory leaks? Or am I missing something?

  • @Konslufius
    @Konslufius Рік тому

    Could you elaborate a little bit further, on why we have to set head = temp? Ok never mind, the newly created node becomes the new head of the list. That is why.

  • @surafelnegaalemayehu1080
    @surafelnegaalemayehu1080 4 роки тому

    thanks bro it was really help full for me

    • @JacobSorber
      @JacobSorber  4 роки тому

      You're welcome. Glad it helped

  • @viniricardoferrera
    @viniricardoferrera 4 роки тому

    This is awesome!
    Pretty neat!
    Thank you

    • @JacobSorber
      @JacobSorber  4 роки тому +1

      You're welcome. Glad you enjoyed it!

  • @ayoubmentag9883
    @ayoubmentag9883 2 роки тому

    That was super helpful...:)

  • @EnkoVlog
    @EnkoVlog 2 роки тому

    Could you please make a video with an explanation about "an intrusive linked list" ? This data structure is used in the Linux kernel and it's difficult to understand.