单链表在内存中存储的思路应该是,这样子的:
声明一个单链表之后,就产生了头指针了。头指针,指向头结点的内存地址或者为null。
节点是针对数据而言,它必须要有当前节点的数据内容,又要有下一个节点的指针。在内存的形而上中,逻辑上区分开它们两种——取名数据域和指针域。
头结点的数据域可以为null,或者可以存储链表的长度,指针域为第一个数据节点的指针地址或者为null。
尾节点的指针为null。
单链表读取第i个节点:
思路——
顺序存储,很简单:a[i]。
单链表:
从第一个节点开始,计数到i-1,拿指针域,为了拿到第i - 1个节点的指针域。
- 声明一个变量p,赋值为链表的第一个节点的指针域。声明循环计数j=1。
- while循环(因为单链表的长度不确定),循环条件 :p存在 并且 j 小于i。要做的事:p = p->next 下一个节点的指针域,j++ 。
- 概念边界 : !p || j > i , return error 。
- 拿到p的最终的值,通过指针,拿到数据域的数据,返回数据。