首先列出一个很容易弄混的概念
链表是顺序存取,顺序表是随机存取。
链表是链式存储,顺序表是顺序存储。
下面挑个评论区炸裂的来说说。
此处的链表操作的三个难点分别解释一下:
1.其实就是位置不能不能互换,否则将会产生覆盖导致后面的指针没法传递给s。
2.其实就是我们需要在哪个点停止,我们可以看到我们设置的p一开始并没有指向首元结点,而是被赋予了头指针。这个其实是方便我们循环,让j的值就等于当前所指的那个数据元素的位置。
3.前面的!p是为了提出所指位置即i-1非空,产生空的条件是 i 大于表长+1,为什么是表长加一呢?因为我们对空的判定只到i-1,而不是i元素本身,我们所做的其实是将 i 的指针(从i-1 next中来)赋值给新元素(e)的next,再把 i -1的next指针指向新的元素(e)。所以我们从始至终关注的从来不是原来 i 的位置占着谁,而是i - 1的next里装着什么宝贝。