结构体和数组
1、结构体可以存不同类型的元素,而数组只能存同一类型
2、结构体类型需要我们自已定义.数组是用别的类型加[元素个数]
3、结构体内存分配方式很特别,使用对齐原则,不一定是所有元素的字节数和,而数组一定是所有元素的字节数和.
4、结构体指针可以指针名->结构体元素名(取元素);数组不行
5、结构体嵌套可以使用点语法逐级寻找,数组不能
数组和链表
1、数组保存在栈空间中,由编译器自动分配。链表需要程序员自己申请空间,数据保存在堆空间中。
2、数组在内存中占用连续的内存空间,在编译阶段就已经确定了数组的大小,在程序运行时依据预定大小预留空间。链表的每个节点在程序运行时按需逐个申请,节点与节点之间不连续。所以数组空间利用率低,可能存在空间浪费情况。而且数组扩容很麻烦,由于空间固定,所以需要申请一个更大的空间,将旧空间的数据全部移动到新空间
3、数组插入数据和删除数据效率低,插入数据时,待插入位置的的元素和它后面的所有元素都需要向后移动,删除数据时,待删除位置后面的所有元素都需要向前移动。链表删除效率高,只需要将对应节点前一个节点指向对应节点下一个节点即可。
4、数组查询效率高,数组的内存是连续的,想要访问那个元素,直接从数组的首地址处向后偏移就可以访问到了。链表的空间是分散的,所以不具有随机访问性,如要需要访问某个位置的数据,需要从第一个数据开始找起,依次往后遍历,直到找到待查询的位置,故可能在查找某个元素时,时间复杂度达到O(N)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)