Reverse one-way linked list
#include <stdio.h>#include <stdlib.h>struct Node {int data;struct Node *next;};void list_reverse(struct Node **head){struct Node *cur, *rev;struct Node *hold;cur = *head;rev = 0;while (cur) {hold = cur;cur = cur->next;hold->next = rev;rev = hold;}*head = rev;}void list_print(const struct Node *head){while (head) {printf("%d ", head->data);head = head->next;}printf("\n");}void list_push(struct Node **head, int data){struct Node *node;node = (struct Node *)malloc(sizeof(struct Node));if (!node) return;node->data = data;node->next = *head;*head = node;}void list_clear(struct Node **head){struct Node *cur, *hold;cur = *head;while (cur) {hold = cur;cur = cur->next;free(hold);}*head = 0;}int main(){struct Node *list = 0;list_push(&list, 1);list_push(&list, 3);list_push(&list, 5);list_push(&list, 7);list_push(&list, 9);list_print(list);list_reverse(&list);list_print(list);list_clear(&list);return 0;}
This article is from the "chhquan" blog, please be sure to keep this source http://chhquan.blog.51cto.com/1346841/1567617
Reverse one-way linked list