已知一个带头结点的非空单循环链表, 其头指针为h,p指向某个结点(不是头结点),编写一个对此单循环链表进行遍历的算法。
时间: 2024-06-12 18:09:21 浏览: 104
循环链表,双链表及链表应用
5星 · 资源好评率100%
遍历一个带头结点的非空单循环链表的算法可以按照以下步骤进行:
1. 初始化指针p指向头结点的下一个结点,也就是链表的第一个结点。
2. 循环遍历链表,直到p指针重新指向头结点,表示已经遍历完整个链表。
3. 在每一次循环中,输出p指针所指向的结点的数据,并将p指针向后移动一个结点。
4. 重复步骤2和步骤3,直到遍历完整个链表。
下面是C语言描述的代码实现:
```c
void TraverseCircularList(LinkList h) {
LinkList p = h->next; // 获取第一个结点
while (p != h) {
printf("%d ", p->data); // 输出当前结点的数据
p = p->next; // 移动到下一个结点
}
printf("\n");
}
```
算法的时间复杂度为O(n),其中n为链表中的结点个数。
阅读全文