(1)无头单链表销毁(尾插):
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
void tail_list(per **one, int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
temp->next = NULL;
while((*one))
{
one = &((*one)->next);
}
*one = temp;
}
void show(per *head)
{
if(NULL == head)
{
return;
}
while(head)
{
printf("age is %d\n",head->age);
head = head->next;
}
}
void destory(per **head)
{
per *curr = *head;
per *past = *head;
while(past)
{
curr = past;
past = past->next;
free(curr);
curr = NULL;
}
*head = NULL;
}
int main()
{
per *head = NULL;
tail_list(&head,10);
tail_list(&head,20);
tail_list(&head,30);
tail_list(&head,40);
tail_list(&head,50);
tail_list(&head,60);
show(head);
printf("=======after destory========\n");
destory(&head);
show(head);
return 0;
}
(2)有头单链表销毁(头插):
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
per *head_list(per *one, int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
per *head = one->next;
one->next = temp;
temp->next = head;
return head;
}
void show(per *head)
{
if(NULL == head->next)
{
return;
}
while(head->next)
{
printf("age is %d\n",head->next->age);
head = head->next;
}
}
void destory(per *head)
{
per *curr = head->next;
while(curr)
{
head->next = curr->next;
free(curr);
curr = head->next;
}
}
int main()
{
per head;
head.next = NULL;
head_list(&head,10);
head_list(&head,20);
head_list(&head,30);
head_list(&head,40);
head_list(&head,50);
show(&head);
printf("=======after destoryy======\n");
destory(&head);
show(&head);
return 0;
}