我们在上一篇关于循环链表的文章中讨论了循环链表的介绍和应用。在这篇文章中,讨论遍历操作
在传统的链表中,我们从头节点开始遍历链表,当我们到达 NULL 时停止遍历。在循环链表中,当我们再次到达第一个节点时,我们停止遍历。以下是链表遍历的 C++ 代码。
void printList(Node* head) { Node* temp = head; if (head != NULL) { do { cout << temp->data << " "; temp = temp->next; } while (temp != head); } }
完整的程序来演示遍历。 以下是演示循环链表遍历的完整程序。
#include <bits/stdc++.h> using namespace std; /* 节点结构 */ class Node { public: int data; Node *next; }; /* 在循环链表的开头插入一个节点的函数 */ void push(Node **head_ref, int data) { Node *ptr1 = new Node(); Node *temp = *head_ref; ptr1->data = data; ptr1->next = *head_ref; /* 如果链表不为 NULL 则设置最后一个节点的下一个 */ if (*head_ref != NULL) { while (temp->next != *head_ref) temp = temp->next; temp->next = ptr1; } else ptr1->next = ptr1; /*对于第一个节点*/ *head_ref = ptr1; } /* 在给定的循环链表中打印节点的函数 */ void printList(Node *head) { Node *temp = head; if (head != NULL) { do { cout << temp->data << " "; temp = temp->next; } while (temp != head); } } /* 测试上述功能的驱动程序 */ int main() { /* 初始化列表为空 */ Node *head = NULL; /* 创建的链表将是 11->2->56->12 */ push(&head, 12); push(&head, 56); push(&head, 2); push(&head, 11); cout << "循环列表内容\n "; printList(head); return 0; }
输出:
循环列表内容 11 2 56 12