#include <stdio.h>
#include <stdlib.h>
typedef struct list_node {
int data;
struct list_node* next;
} node;
node* reverse_list(node* head){
if(head == NULL)
return NULL;
node* pcur = head;
node* pnxt;
head = NULL;
while(pcur){
pnxt = pcur->next;
pcur->next = head;
head = pcur;
pcur = pnxt;
}
return head;
}
node* create_list(int length){
node* head = NULL;
node* cur = NULL;
if(length == 0)
return head;
int i;
for(i=0; i<length; i++){
if(head == NULL){
head = cur = (node*)malloc(sizeof(node));
cur->data = i;
cur->next = NULL;
}
else{
cur->next = (node*)malloc(sizeof(node));
cur = cur->next;
cur->data = i;
cur->next = NULL;
}
}
return head;
}
void free_list(node* head){
node* next;
while(head){
next = head->next;
free(head);
head = next;
}
}
void display_list(node* head){
while(head){
printf("%d ", head->data);
head = head->next;
}
}
int main(){
int num;
printf("please input a number to construct a linked list:\n");
scanf("%d",&num);
node* head = create_list(num);
printf("befor reverse\n");
display_list(head);
printf("\n");
head = reverse_list(head);
printf("after reverse\n");
display_list(head);
printf("\n");
free_list(head);
}
#include <stdlib.h>
typedef struct list_node {
int data;
struct list_node* next;
} node;
node* reverse_list(node* head){
if(head == NULL)
return NULL;
node* pcur = head;
node* pnxt;
head = NULL;
while(pcur){
pnxt = pcur->next;
pcur->next = head;
head = pcur;
pcur = pnxt;
}
return head;
}
node* create_list(int length){
node* head = NULL;
node* cur = NULL;
if(length == 0)
return head;
int i;
for(i=0; i<length; i++){
if(head == NULL){
head = cur = (node*)malloc(sizeof(node));
cur->data = i;
cur->next = NULL;
}
else{
cur->next = (node*)malloc(sizeof(node));
cur = cur->next;
cur->data = i;
cur->next = NULL;
}
}
return head;
}
void free_list(node* head){
node* next;
while(head){
next = head->next;
free(head);
head = next;
}
}
void display_list(node* head){
while(head){
printf("%d ", head->data);
head = head->next;
}
}
int main(){
int num;
printf("please input a number to construct a linked list:\n");
scanf("%d",&num);
node* head = create_list(num);
printf("befor reverse\n");
display_list(head);
printf("\n");
head = reverse_list(head);
printf("after reverse\n");
display_list(head);
printf("\n");
free_list(head);
}