数据结构 - 序列

struct Data {
   int value;
}
Data data_list[30];
  • std::vector

链表 - Link List

struct ListNode {
   Data *data;
   Node *next;
}
ListNode *first  = new ListNode();
ListNode *second = new ListNode();

first->next = second;
  • 按需分配
    • 不需要像 Array 一样预先分配所有空间

间接寻址 List

struct Data {
   int value;
}

DataNode *first  = new DataNode();
DataNode *second = new DataNode();

DataNode* nodes[30];
nodes[0] = first;
nodes[1] = second;
  • 这种用法实际上类似于 map

模拟指针 - Simulated Pointer

如果

struct ListNode {
   Data *data;
   Node *next;
}

变成

struct ListNode {
   Data *data;
   int   next;
}
ListNode  space[30];

ListNode *first  = &space[3];
ListNode *second = &space[7];

first->next = 7;

其中 next 表示一块预先分配的连续内存中的位置。

  • 这实际上是一种内存池的应用。