我们编写程序(做leetcode题),其实最终还是让计算机去“运算”的,而为了减小时间复杂度和空间复杂度,“算法”仍然是核心,“数据结构”只是为了实现算法的一个方便描述的工具、一个将问题抽象出来的存在;而结果的得出的过程则一种对问题的“模拟”。
大一时,我们通过对“语言基础”的学习,我们就已经知道了一些算法与数据结构:
我们之前在 C++ 里学过结构体struct + 指针 + 动态创造内存(malloc函数),用它来定义一个数据结构,这种虽然严谨美观,但是有三大缺点:
为了解决这几个问题,我们引入了一种船新的构造数据结构的方法:
比如我定义一个下面的数据结构:
定义数据结构:
typedef struct Node {
int x;
int y;
string str;
struct Node* next;
} Node;
typedef struct Node* NodeList;
// 开空间(动态):
NodeList L = (Node*)malloc(NUM * sizeof(Node));
// 指针初始化:
Node* ptr = L;
// 移动指针,创建新元素:
ptr++;
我们换成另外一种定义方法,开一个静态数组的空间