#include<stdlib.h>
#include<stdio.h>typedef struct list{ int data; struct list*next;} List;List* insert_list_last();List*reverse(List*head);int main(){ List*head; List*p; head=insert_list_last(); p=head->next; while(p) { printf("%d\n",p->data); p=p->next; } printf("affter reverse\n"); head=reverse(head); p=head; while(p->next) { printf("%d\n",p->data); p=p->next; } }List* insert_list_last(){ int i; List*head=(List*)malloc(sizeof(List)); List*newnode,*tail; head->next=NULL; tail=head; for(i=0;i<10;i++) { newnode=(List*)malloc(sizeof(List)); newnode->data=i; newnode->next=NULL; tail->next=newnode; tail=newnode; } return head;} List*reverse(List*head){ List*p,*q,*r; if(head==NULL) return NULL; p=head; q=head->next; if(q==NULL) return head; while(q) { r=q->next; q->next=p; p=q; q=r; } head->next=NULL; return p;}