c - 为什么我们需要一个 "Circular Linked List"(单或双)数据结构?

标签 c data-structures linked-list circular-list

为什么我们需要“循环链表”(单链表或双链表)数据结构?

它解决了哪些简单链表(单链表或双链表)显而易见的问题?

最佳答案

一个简单的例子是在多人棋盘游戏中记录轮到谁了。将所有玩家放在一个循环链表中。轮到玩家后,前进到列表中的下一个玩家。这将导致程序在玩家之间无限循环。

要遍历循环链表,请存储指向您看到的第一个元素的指针。当您再次看到该元素时,您已经遍历了整个列表。

void traverse(CircularList *c) {
  if (is_empty(c)) {
    return;
  }
  CircularList start = c;
  do {
    operateOnNode(c);
    c = c->next;
  } while(c != start);
}

关于c - 为什么我们需要一个 "Circular Linked List"(单或双)数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589772/

相关文章:

python - 如何以最快的方式从 Python 中的计数器中删除频率最低的元素?

python - 指向 Python 子字符串 : memoryview vs itertools. 的指针 islice vs …?

c++ - 链表的基于范围的for循环

C 错误无法将参数 1 从 int * 转换为 int

c - 在 C 中分配给数组

python - Cython 扩展类型是否支持类属性?

algorithm - 实时显示一段时间内最常见/重复的元素

c - 如何使用 openssl lib c 语言在算法 Diffie Hellman 中计算 2 个用户的共享 secret ?

java - 链表添加节点不起作用

c - 链表删除位置 N 的节点