不同点:
顺序表和链表是两种常见的数据结构,他们的不同点在于存储方式和插入、删除操作、随机访问、cpu缓存利用率等方面。
一、存储方式不同:
顺序表:
顺序表的存储方式是顺序存储,在内存中申请一块连续的空间,通过下标来进行存储;
链表:
链表的存储方式是链式存储,申请的空间是未必连续的,以节点的形式连接,每个节点会有一个next指针,指向下一个节点,通过指针来访问元素;
二、插入、删除的效率不同:
顺序表:
插入删除元素时,需要移动元素的位置也就是搬移元素,导致效率低下
链表:
插入删除时只需要修改指针指向。
三、内存利用率:
顺序表:
需要扩容,创建空间大小是固定的,当空间不够时需要进行扩容,以2倍的关系扩增的,你少一个空间,我增大到原来的2倍,还会有多余空间未使用,所以扩容会造成空间浪费的现象。
但是注意我们因为用的realloc扩容,所以扩容本身会有消耗!!👉👉👉
由于realloc扩容的特性,不确定是原地还是异地扩容,这个与编译器有点关系
原地扩容:扩容的空间地址与原来地址相同
异地扩容:扩容的空间地址与原来地址不同(将原来的数据拷贝过来,还要销毁原来的空间)
链表:
按需申请的空间,不会存在空间浪费现象,利用率极高
四、随机访问:
顺序表: