#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct NODE{
int num;
struct NODE * next;
};
typedef struct NODE _node;
_node * link_head(void)
{
_node * head = NULL;
head = malloc(sizeof(_node));
head->num = -1;
head->next = NULL;
return head;
}
_node * link_inst(_node * head, int num)
{
_node * node = malloc(sizeof(_node));
node->next = head->next;
node->num = num;
head->next = node;
return head;
}
void link_print(_node * head)
{
_node * node = NULL;
node = head->next;
while(node != NULL){
printf("[%d]", node->num);
node = node->next;
}
printf("\n");
}
_node * link_reve(_node * head)
{
_node * temp = NULL;
_node * prev = NULL;
_node * next = NULL;
temp = head->next;
while(1){
if(temp == NULL){
head->next = prev;
break;
}
next = temp->next;
temp->next = prev;
prev = temp;
temp = next;
}
return head;
}
void link_dest(_node * head)
{
_node * node = NULL;
while(1){
node = head->next;
if(node == NULL){
free(head);
break;
}
head->next = node->next;
free(node);
}
}
int main(int argc, char ** argv)
{
int i = 0;
_node * head = link_head();
for(i = 0; i < 100; i++){
link_inst(head, i + 1);
}
link_print(head);
link_reve(head);
link_print(head);
return 0;
}