线性表(vector):
- 数据类型相同。
- 有限序列。
- 内存地址相邻。
- 直接理解为数组即可。
链表:
- 数据类型相同。
- 有指针域表示直接后继的位置。
struct SNode //单链表
{
int nData; //数据
SNode* pNext; //下个元素位置
}; - 内存地址可以不相连。
- 插入与删除操作,只改动指针域指定的直接后继的位置,并且需要考虑链表头或链表尾的位置。
循环链表:
- 插入删除操作时,不需要考虑链表头或链表尾的位置。
双向链表,循环双向链表:
- 同链表及循环链表,只是需要考虑的指针域,即包括直接后继也包括直接前继。
栈:
- 数据类型相同。
- 可以用线性表和链表存储。
- 插入与删除操作,“后进先出”,只能对栈顶进行操作。时间复杂度为O(0)。
队列:
- “先进先出”。