在C语言双向链表中查找元素的步骤如下:
下面是一个简单的示例代码,演示如何在双向链表中查找元素:
#include <stdio.h>
#include <stdlib.h>
// 定义双向链表节点结构体
struct Node {
int data;
struct Node* prev;
struct Node* next;
};
// 在双向链表中查找元素
struct Node* search(struct Node* head, int target) {
struct Node* current = head;
// 遍历整个链表
while (current != NULL) {
// 检查当前节点的值是否等于目标元素
if (current->data == target) {
return current; // 找到目标元素,返回当前节点
}
current = current->next; // 继续遍历下一个节点
}
return NULL; // 遍历完整个链表都没有找到目标元素
}
int main() {
// 创建双向链表
struct Node* head = NULL;
struct Node* node1 = (struct Node*)malloc(sizeof(struct Node));
struct Node* node2 = (struct Node*)malloc(sizeof(struct Node));
struct Node* node3 = (struct Node*)malloc(sizeof(struct Node));
node1->data = 10;
node1->prev = NULL;
node1->next = node2;
node2->data = 20;
node2->prev = node1;
node2->next = node3;
node3->data = 30;
node3->prev = node2;
node3->next = NULL;
head = node1; // 头节点为node1
// 在链表中查找元素
int target = 20;
struct Node* result = search(head, target);
if (result != NULL) {
printf("Element %d found in the list.\n", target);
} else {
printf("Element %d not found in the list.\n", target);
}
// 释放内存
free(node1);
free(node2);
free(node3);
return 0;
}
在上面的示例代码中,首先创建了一个包含3个节点的双向链表,然后通过调用search函数在链表中查找元素20。最后根据查找结果输出相应的提示信息。