数组与链表区别

2019-12-29  本文已影响0人  王雪浩_强化班

数组: 在栈空间内存中申请一块内存,使用变量间接访问这片内存

例子: int A[3]    --> 在栈空间中"连续"申请12个字节

      A[0] A[1]  --> 使用变量A间接访问内存空间  --> A[0]与A[1]之间通过地址寻找下一个数组的目标

   

    A[0]  等价于 *(A+0)

    A[1]  等价于 *(A+1)

    数组: 地址连续,地址之间相差字节数已知  --> 地址+相差字节数=得到下一个目标的值

特点:

1. 由于数组申请的时候地址是连续的,而是每一个储存单位都相同,肯定可以通过计算来得到下一个元素

2. 大小固定的,每次修改数组的值,必须检查数组空间大小  --> 效率低

链表:在堆空间申请一些零碎的内存空间,使用地址让他们连接在一起。

设计链表节点:

struct data{

    int A; //数据域  -> 存放该节点的数据

    struct data *p;  //指针域  --> 存放下一个节点的地址

}

特点:

1. 链表每一个节点的空间都不需要连续的,可以让系统一些零碎的内存空间使用起来

2. 链表由于每一个节点都会存放下一个节点的地址,链表不是通过计算得到下一个节点,而是通过查看指针域来得到下一个节点

3. 没有固定的大小,添加或者删除节点非常方便

 

上一篇 下一篇

猜你喜欢

热点阅读