用c语言写出利用双向链表对数组逆置的函数
时间: 2024-10-11 10:10:34 浏览: 32
《数据结构—用C语言描述》课后习题答案[收集].pdf
在 C 语言中,我们可以使用双向链表(Doubly Linked List)来逆置一个动态大小的数组。这里是一个简单的示例,假设我们有一个`Node`结构体表示链表节点,包含一个整数元素和指向前后节点的指针:
```c
typedef struct Node {
int data;
struct Node* prev; // 指向前一个节点
struct Node* next; // 指向后一个节点
} Node;
// 逆置链表的函数
void reverseArray(Node** head) {
if (*head == NULL || (*head)->next == NULL) { // 如果链表为空或只有一个节点,无需反转
return;
}
Node* current = *head;
Node* temp = NULL; // 临时存储当前节点
while (current != NULL) { // 遍历整个链表
temp = current->prev; // 将当前节点的前一个节点暂存
current->prev = current->next; // 更新当前节点的前驱为下一个节点
current->next = temp; // 更新当前节点的后继为之前暂存的节点
current = current->prev; // 移动到下一个待处理的节点
}
if (temp != NULL) { // 因为最后一步改变了头节点的前驱,所以需要再次设置
*head = temp->prev; // 新的头节点将是原头节点的前一个节点
}
}
```
这个函数接收一个指向链表头节点的指针,并在原地修改链表,使其变成原来的逆序。
阅读全文