如何遍历双链表中的每个元素
时间: 2024-10-01 20:12:21 浏览: 29
在C语言中,遍历双链表(也称为双向链表)中的每个元素通常会涉及到两个指针,一个指向当前节点,另一个指向前一个节点。这里有一个简单的示例,展示了如何使用迭代的方式遍历双链表:
```c
typedef struct Node {
int data; // 节点数据
struct Node* prev; // 指向前一个节点
struct Node* next; // 指向下一个节点
} Node;
// 创建一个双链表节点
Node* createNode(int value) {
Node* newNode = malloc(sizeof(Node));
newNode->data = value;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
}
// 迭代遍历双链表
void traverseDLL(Node* head) {
Node* current = head;
while (current != NULL) { // 当前节点不为空
printf("%d ", current->data); // 输出当前节点的数据
current = current->next; // 移动到下一个节点
}
}
// 示例:创建并遍历一个简单的双链表
int main() {
Node* listHead = createNode(1);
listHead->next = createNode(2);
listHead->next->prev = listHead;
listHead->next->next = createNode(3);
listHead->next->next->prev = listHead->next;
traverseDLL(listHead);
return 0;
}
```
在这个例子中,我们首先创建了一个链表结构,然后在`traverseDLL`函数里,通过不断更新`current`指针直到它为NULL,就可以访问到链表的所有节点。
阅读全文