单链表的销毁

xiaoxiao2021-02-28  83

(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; }

转载请注明原文地址: https://www.6miu.com/read-63855.html

最新回复(0)