数据结构简介
常见的数据结构可分为「线性数据结构」与「非线性数据结构」,具体为:「数组」、「链表」、「栈」、「队列」、「树」、「图」、「散列表」、「堆」。
数组(Array)
对于数组,记住最重要的两点:连续的空间和不可改变的大小。
如图所示(图片中是对于java new一个数组),定义一个长度为4 的数组,并对每个数组的索引元素赋值,c++代码如下:
//初始化
int array[5];
//元素进行赋值
array[0]=2;
array[1]=3;
array[2] = 1;
array[3] = 0;
array[4] = 2;
或者是直接用以下代码进行初始化操作。
int array[] = {
2, 3, 1, 0, 2};
但是数组不能改变大小,还需要连续空间,那么对于数组的操作不就会显得有些局限吗?
所以,后来就提出来了,可变数组这个内容,能够灵活调整自己的大小,它是基于数组和扩容机制一起实现的。常见的操作有:查、删、增。
// 初始化可变数组
vector<int> array;
// 向尾部添加元素
array.push_back(2);
//访问可变数组的大小
array.size();
//删除最后一个元素
array.pop_back()
//判断是否为空
array.empty()
//传回第一个下标
array.begin()
//返回最后一个小标
array.end()
上述的可变数组声明中的vector实际上是一个对象实体,又被称为容器,可以被广义的认为是数组的加强版本。后续章节会讲到关于vector的专门讲解,此处便不做过多的介绍。
链表(Linked List)
链表以节点为单位,每个元素都是一个独立的对象,在内存空间的存储是非连续的。链表的节点对象具有两个成员变量:[值 val],[后继节点 next]
链表的c++代码:
struct ListNode {
int val; // 节点值
ListNode *next; // 后继节点引用<