1、实现不带头结点单链表逆置算法,逆置后头指针在最后一个结点,并返回头指针 typedef struct node {DataType data;struct Node *next;}Node; Node* ReverseList(Node *head)
时间: 2024-12-14 12:14:26 浏览: 12
实现单链表逆置的一种常见方法是使用迭代的方式。首先创建两个指针,一个指向当前节点,另一个称为prev,初始值为NULL。然后,遍历链表,对于每个节点,将其next指向前一个节点,然后将当前节点和prev都向后移动一位。当遍历完整个链表后,原头节点现在就是新的尾节点,所以我们可以返回它作为新的头指针。
以下是用C语言描述的算法步骤:
1. 初始化两个指针current(当前节点)和prev(前一个节点),并将它们都设置为head。
2. 当current不为空时,执行以下操作:
a. 记录当前节点的下一个节点temp,即将temp设为current->next。
b. 更新当前节点的next指针,使其指向prev(即逆转链接)。
c. prev向前移动一步,指向temp。
d. current向前移动一步,指向下一个节点(如果有的话)。
3. 遍历结束后,prev就是新链表的头,返回prev。
下面是伪代码形式的函数实现:
```cpp
Node* ReverseList(Node* head) {
Node* current = head;
Node* prev = NULL;
Node* temp;
while (current != NULL) {
temp = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // prev前进一位
current = temp; // current前进一位
}
return prev; // 返回新的头节点
}
```
阅读全文