在之前我们已经讲了单向链表的基本实现与相关函数
https://blog.csdn.net/frc8011_zzr/article/details/111657732
上方是 “直通车”
那本篇将主要展示的是循环列表与单向链表在C++中实现里的主要区别
其他未提及处结合上方文章即可触类旁通
//创建第d个节点存入数据d1
void List::insert(const int& d, const int& d1) {
Node* p;
Node* q=head;
for (int i = 0;i < d;i++) {
q = q->next;
}
//尾部插入
if (length() == d) {
p->next = head;
}
//中间插入
else {
p->next = q->next;
}
q->next = p;
}
//删除第d个节点
void List::cannel(const int& d) {
Node* q = head;
for (int i = 0;i < d;i++) {
q = q->next;
}
//尾部删除
if (length() == d) {
q->next = head;
}
//中间删除
else {
q->next = q->next->next;
}
q = q->next;
delete q;
}
此外https://blog.csdn.net/frc8011_zzr/article/details/111713217中提到的双向链表,可以与本篇中的循环链表相结合,形成双向循环链表,欢迎一起在评论区探讨有关的实现问题
下一篇我们将讲解如何用简便的方法来判断链表有环以及求环长
限于笔者水平有限,文章有许多疏漏,敬请指正