其实,给我感觉,单链表的反转跟链表头部是同一个原理!
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int num;
struct Node *next;
}List;
int display_list(List *list);
List *create_list();
List insert_list_tail(List *head, int i);
int reverse_single_linked_list(List *list);
int main()
{
int i;
List *head = create_list();
for(i=1; i<6; i++)
insert_list_tail(head, i);
display_list(head);
reverse_single_linked_list(head);
display_list(head);
free(head);
return 0;
}
int display_list(List *list)
{
List *p = list;
if(NULL == p->next){
printf("The list is empty!\n");
return -1;
}
while(NULL != p->next){
printf("%d->", p->next->num);
p = p->next;
}
printf("\n");
return 0;
}
List *create_list()
{
List *list = NULL;
list = malloc(sizeof(List));
if(NULL == list){
printf("malloc memory failed!\n");
exit(