一、定义
1. 链表
- 顺序表:
int arr[110];
int idx;
- 单链表:
struct Node {
int val;
Node *next;
Node() : next(NULL) {}
Node(int _val) : val(_val), next(NULL) {}
};
- 双链表:
struct Node {
int val;
Node *prev, *next;
Node() : prev(NULL), next(NULL) {}
Node(int _val) : val(_val), prev(NULL), next(NULL) {}
};
2. 栈
- 单调栈:
int stk[110];
int top = 0; // -1
- 链栈:
struct Node { // 与链表的定义相同
int val;
Node *next;
Node() : next(NULL) {}
Node(int _val) : val(_val), next(NULL) {}
};
3. 队列
- 单调队列
int q[110];
int head = 0, rear = 0;
- 链队
struct Node { // 与链表的定义相同
int val;
Node *next;
Node() : next(NULL) {}
Node(int _val) : val(_val), next(NULL) {}
};
4. 树
struct TreeNode {
int val;
TreeNode *left, *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
二、使用
- 创建节点:
Node node_name = new Node(val);
- 删除节点:
delete(node_name); // 调用析构函数