动态链表–智障般的详解(4)添加node到链表里面

在把指针的地址传到insert里面后,我们就要开始写sub-function—insert来将new node 添加到链表里面了。

以下是code

 

  • 首先我们要用到malloc,我在这里简单的解释一下,它的作用就是在heap里面人为的申请内存。
  • malloc需要用到sizeof来给出需要内存的数量,以及我们需要再用完这部分内存后用free去释放这部分内存,防止内存过早占满造成溢出,但如果不用free,在程序被执行完后,程序会自动释放这部分内存。
  • malloc的返回值是一个void型的指针。
  • 值得注意的是,当heap里面没有足够的内存时,malloc可能分配不到内存,自动返回NULL,所以我们需要一个if statement来判断。在这个例子里,我用的是如果malloc没能分配到内存,将打印 no memory available 作为提示。
  • 在确定有内存后,我们首先将value传到newnode的n里,再将newnode的next指向一个空白的指针。
  • 接着,再申请两个结构体指针pre和cur用来寻找要插入指针的位置,将pre初始化为NULL,cur为*start。
  • 为了寻找到插入的位置,将用到一个while循环,找到*start的最后一个节点。
  • 如果pre为NULL的话,说明newnode是第一个节点,将这个newnode放在*start前。
  • 如果不是第一个节点,将newnode接在pre后面,它的next指向NULL作为结尾。
  • 这里有一些迷惑的是我们并没有直接用*start,而是用到pre和cur来寻找节点的,我们先用cur来指向start的地址(这样在改变cur的时候实际上实在盖面start的值),再用pre=cur作为newnode的前一个节点。
  • 思想如图:

发表评论

电子邮件地址不会被公开。