制作企业网站页面实训报告,企业管理网站,wordpress 主页插件,手机怎么自创网站目录 1 知识点2 模板 1 知识点
一般以指针实现为主#xff0c;可以预生成N个结构体。
struct ListNode {int val;ListNode *next;
};但这里以数组模拟为主。
单链表和邻接表。 双链表。
#xff08;一#xff09;插入操作 链表插入操作的关键步骤#xff0c;比如在结点… 目录 1 知识点2 模板 1 知识点
一般以指针实现为主可以预生成N个结构体。
struct ListNode {int val;ListNode *next;
};但这里以数组模拟为主。
单链表和邻接表。 双链表。
一插入操作 链表插入操作的关键步骤比如在结点a处插入一个新结点b
构建结点bb的next指针指向a的下一个结点。a的next指针指向b。
注意必须先进行操作1再进行操作2。
二删除操作 删除结点k的后一个结点 ne[k] ne[ne[k]]
2 模板
const int N 1e5 10;
int head; //记录头结点的编号。
int idx; //生成所有结点的编号。
int e[N], ne[N]; //e[i]表示结点i的值ne[i]表示结点i的next结点编号。//1初始化链表
void init() {head -1;idx 0;
}//2在头结点插入数值x
void head_insert(int x) {e[idx] x, ne[idx] head, head idx, idx;
}//3在结点k后插入数值x
void insert(int k, int x) {e[idx] x, ne[idx] ne[k], ne[k] idx, idx;
}//4删除头结点
void head_remove() {head ne[head];
}//5删除结点k后面的结点
void remove() {ne[k] ne[ne[k]];
}//6遍历当前单链表
for (int i head; i ! -1; i ne[i]) {//i表示结点编号//e[i]为结点的值cout e[i] ;
}