在C语言中,双向链表的遍历主要有以下两种方法:
- 从头到尾遍历:从链表的头节点开始,依次遍历每个节点,直到到达链表的尾节点为止。这种方法可以使用while循环实现,每次将当前节点指针移动到下一个节点,直到指针为空。
void traverseForward(Node* head) { Node* current = head; while (current != NULL) { // 处理当前节点 // ... current = current->next; } }
- 从尾到头遍历:从链表的尾节点开始,依次遍历每个节点,直到到达链表的头节点为止。这种方法可以使用while循环实现,每次将当前节点指针移动到上一个节点,直到指针为空。
void traverseBackward(Node* tail) { Node* current = tail; while (current != NULL) { // 处理当前节点 // ... current = current->prev; } }
需要注意的是,双向链表相比单向链表多了一个指向上一个节点的指针,因此可以很方便地从尾到头遍历链表。