用c编写程序,对单链表进行逆置。 示例 逆置前: 9 8 7 6 5 4 3 2 1 0 逆置后: 0 1 2 3 4 5 6 7 8 9
时间: 2024-12-02 07:19:40 浏览: 12
在C语言中,我们可以使用迭代的方式来实现单链表的逆置。以下是简单的步骤:
1. 定义结构体表示链表节点,包含数据和指向下一个节点的指针。
```c
typedef struct Node {
int data;
struct Node* next;
} ListNode;
```
2. 创建一个函数`reverseList`来进行逆置操作。首先创建三个指针:`prev`用于记录当前节点的前一个节点,`current`用于遍历链表,`temp`用于临时存储`current`的下一个节点。
```c
ListNode* reverseList(ListNode* head) {
ListNode* prev = NULL, *current = head, *temp = NULL;
while (current != NULL) {
temp = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // 更新prev为当前节点
current = temp; // 进入下一次循环,当前节点变为原下一个节点
}
return prev; // 返回新的头节点,即原链表的尾节点
}
```
3. 示例:
```c
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
// 初始化链表...
ListNode* listBeforeReverse = ...;
printList(listBeforeReverse); // 打印逆置前的链表
ListNode* reversedList = reverseList(listBeforeReverse);
printList(reversedList); // 打印逆置后的链表
return 0;
}
```
阅读全文