用于存放地址,全称“地址变量”
指针的定义与取地址如下
int *p; //创建指针 int a; //定义整型变量 p = &a; //用p存放a的地址 *p =123 //更改a的值
优点: 可以很方便的更改数据或进行地址管理
缺点: 地址是随机生成的
一般来说,链表包含两部分:数值和下一项的地址
优点: 很方便的插入和删除元素
思路:新增元素,把前一项指针指向新插入的项,把新项的指针指向下一项
void insertNode(int i, Node *p) { Node *node = new Node; node->value = i; node->next = p->next; p->next = node; }
思路:将要删除的元素前一项指针指向下下项
void deleteNode(Node *p) { p->value = p->next->value; Node *t = p->next; p->next = p->next->next; delete t; }
一种用来以\(O(n)\)的时间复杂度来存储图的方法(个人觉得很玄学)
// head[u] 和 cnt 的初始值都为 -1 void add(int u, int v) { nxt[++cnt] = head[u]; // 当前边的后继 head[u] = cnt; // 起点 u 的第一条边 to[cnt] = v; // 当前边的终点 } // 遍历 u 的出边 for (int i = head[u]; i != -1; i = nxt[i])//i != -1也可写成i~ { int v = to[i]; }