首页 > 编程知识 正文

链表与数组的优缺点以下说明正确的是,链表与数组的数据读写

时间:2023-05-05 21:53:35 阅读:182021 作者:4407

链表和数组的区别:两者的区别:1.数组静态分配内存,链表动态分配内存。

2 .数组在内存中是连续的,链表是不连续的。

3 .数组通过下标定位,搜索的时间复杂度为o(1),链表通过遍历定位元素搜索的时间复杂度为o(1 )。

4 .插入和删除数组需要移动其他元素。 时间复杂度为o(n ),插入或删除链表不需要移动其他元素。 时间复杂度为o )1)。

排列的优点1 .随机存取性高,可以通过下标进行高速定位。

2 .检索速度快。

数组的缺点1 .插入和删除效率低,需要移动其他要素。

2 .导致内存浪费。 由于内存是连续的,申请数组时必须规定7个内存的大小,如果不合适就会导致内存的浪费。

3 .内存空间要求很高,需要足够的连续内存空间才能创建数组。

4 .的大小是固定的,在创建数组时已经确定,无法动态扩展。

链表的优点1 .插入和删除效率高,只需改变指针的方向就可以插入和删除。

2 .内存利用率高,可以使用内存中细小、不连续的空间,且不会浪费内存,仅在需要时创建空间。 随时动态分配空间,大小不固定,扩大灵活性。

链表的缺点1 .检索效率低,链表的检索从最初的节点开始按顺序向后遍历。

链表的另一点:1.malloc ()函数malloc是一个请求存储空间的函数,函数原型为:

void*malloc(unsignedsize );

函数功能:分配长度为size字节的存储块。 (向内存动态存储区请求size字节的连续存储空间)

返回值:返回指向新分配的存储器块的开头地址的指针; 如果分配的内存空间不足,则返回NULL。

说明:由于函数值为指针类型,基类型为void,所以将该指针分配给其他类型的指针变量时,应该强制进行类型转换。

例如:

int*p=(int* ) malloc (sizeof ) int );

申请int型长度的存储区域,将被分配的村的存储区域地址变换为int型地址,分配给定义的指针变量p。 基本型字节数为int型的占有区域2或4。

例如:

structstudp=(structstud ) malloc ) sizeof ) structstud );

申请可以存储结构类型数据的空间,并将该地址存储在p指针中。 struct stud结构类型的定义改变了此语句的申请空间大小,使程序更容易适应不同的机器,从而提高程序的适应性。

2.free ) ) free函数是一种释放存储空间的函数,函数原型为:

voidfree(void*p );

函数功能:释放指针变量p所指的存储空间,并返回系统。

无返回值。

3 .链表分为单链表、循环链表、双向链表。

单链表:

如果每个节点只包含一个指针,则所有节点都是单线链路,每个节点的指针指向下一个节点(除了末尾的节点指针为空),并连接一系列链接以形成线性链。 这个链表称为单个线性链表或简单的单个链表。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。