我理解的顺序表和链表存储
写点什么东西对自己总有好处,证明自己还在努力的学习。
每天的积累总对自己有好处。今天就来总结一下我们的常用的数据结构。
1.顺序表存储结构(典型的数组)
原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度。
优点:存取速度高效,通过下标来直接存储。
缺点:1.插入和删除比较慢,2.不可以增长长度。
比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序。
时间性能 :查找 O(1) ,插入和删除O(n)。
2.链表存储结构
原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题。
优点:插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可。
缺点:查找速度慢,因为查找一个元素时,需要从开始节点一个一个节点去查找元素访问。
时间性能 :查找 O(n) ,插入和删除O(1)。
1.从它们的存储优缺点来看,各自有各自的使用场景,比如:频繁的查找却很少的插入和删除操作可以用顺序表存储,如果频繁的插入和删除操作很少的查询就可以使用链表存储。
2.当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。而如果事先知道线性表的大致长度,比如一年12月,一周就是星期一至星期日共七天,这种用顺序结构效率会高很多。
注:后续java代码会跟进。希望能对大家有帮助。