C++中数组与链表的区别,各…

C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。
    链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。

A 从逻辑结构来看
A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)

B 从内存存储来看
B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.
各自优缺点:
利用数组来组织数据结构 
优点是:存储效率高,存取速度快。 
但是,对于数据元素个数动态增长的情况,由于数组个数不能自由扩充(动态数组除外),一旦空间用完就不能再向里加入新元素,否则,就会导致系统停工。 
利用链表则适用于插入或删除频繁、存储空间需求不定的情况。
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用数组链表来保存多个对象的指针,具体方法如下: 1. 数组保存指针 在 C++ ,可以使用数组来保存多个对象的指针。如下所示: ```c++ class MyClass { // ... }; MyClass* array[10]; // 声明一个指针数组,最多可以保存 10 个 MyClass 对象的指针 // 在数组保存 MyClass 对象的指针 for (int i = 0; i < 10; ++i) { array[i] = new MyClass(); } // 使用数组的 MyClass 对象的指针 for (int i = 0; i < 10; ++i) { MyClass* obj = array[i]; // ... } // 释放数组保存的 MyClass 对象的指针 for (int i = 0; i < 10; ++i) { delete array[i]; } ``` 2. 链表保存指针 在 C++ ,可以使用链表来保存多个对象的指针。如下所示: ```c++ class MyClass { // ... }; class Node { public: MyClass* obj; // 指向 MyClass 对象的指针 Node* next; // 指向下一个节点的指针 Node(MyClass* o) : obj(o), next(nullptr) {} // 构造函数 }; // 创建链表并保存 MyClass 对象的指针 Node* head = nullptr; for (int i = 0; i < 10; ++i) { MyClass* obj = new MyClass(); Node* node = new Node(obj); node->next = head; head = node; } // 使用链表的 MyClass 对象的指针 for (Node* node = head; node != nullptr; node = node->next) { MyClass* obj = node->obj; // ... } // 释放链表保存的 MyClass 对象的指针 while (head != nullptr) { Node* node = head; head = head->next; delete node->obj; delete node; } ``` 以上是使用数组链表保存多个对象的指针的方法,需要根据实际情况选用不同的数据结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值