数据结构C语言设计一个算法,逆转一个链表的链接方向
时间: 2024-08-12 22:08:09 浏览: 54
PTA习题:数据结构与算法题目集1
在C语言中,逆转一个链表的链接方向通常使用迭代或递归的方法。这里我将展示一个迭代的算法:
```c
// 首先,假设我们有一个链表节点定义如下:
typedef struct Node {
int data;
struct Node* next;
} Node;
// 迭代方法:
void reverseList(Node** head) {
Node* prev = NULL; // 前一个节点指针
Node* current = *head; // 当前节点指针
Node* nextTemp; // 临时储存当前节点的下一个节点
// 当链表不为空时,循环执行
while (current != NULL) {
nextTemp = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // 更新前一个节点为当前节点
current = nextTemp; // 更新当前节点为下一个节点
}
*head = prev; // 最后,原头节点变成新的头节点(即原尾节点)
}
```
这个算法的工作原理是,每次迭代都将当前节点的`next`指向前一个节点,然后更新这两个指针,直到遍历完整个链表。最后,原来的头节点变成了新的尾节点。
阅读全文