通过以下四个方面对线性表和链表进行比较
![55767d65beaec6ef5527466539f80f39.png](https://i-blog.csdnimg.cn/blog_migrate/f3240d063233f30f81ac3f2601c1729e.png)
(1)特性对比
线性表涉及到的操作有插入和删除操作,那么什么是插入操作呢?
![be237ba9f85342560653f54578a4120a.png](https://i-blog.csdnimg.cn/blog_migrate/725c206e0162d7d1d75e936c89de33c8.png)
像上图,从插空的角度考虑,可插入的空为9个,第一个元素之前,还有每个元素的后面,共有8个元素,共有9个空,也可以看做首尾加8个元素之间的7个空。
从元素位置的角度考虑,共有8个元素所有有8个位置,如果第8个元素后面的那个位置也算一个插入位置,也是9个插入位置。
我们大家习惯上是见缝插针,所以我们一般是从插空的角度考虑,而写代码时,多从元素位置的角度考虑
插入是如何操作的呢,看下图,上面的那个元素是要插入的元素。
![1bac6ec5ce1f9b79cffc47268d976608.gif](https://i-blog.csdnimg.cn/blog_migrate/bbffd12130347fc6d96fefa3637d61c6.gif)
从后向前逐个向后移动元素。
删除元素的操作
![43df7c3d4e18da59bca3e14d3bd16067.gif](https://i-blog.csdnimg.cn/blog_migrate/ec1d087ce17a9fb40c0ad49ab72997e7.gif)
从前向后,向前移动删除元素位置后的每一个元素。
链表的插入删除操作,如下图:
![46cc965b77937027432684ee8ce131be.gif](https://i-blog.csdnimg.cn/blog_migrate/371cc3c18387e8c3b7207dd5bd9ff65f.gif)
插入操作:
q->next=p->next;
p->next=q;