• 数据结构C语言实现----销毁链表


    1.首先,将*list(头指针)赋值给p,这样p也指向链表的第一个结点,成为链表的表头

    2.然后判断只要p不为空,就将p指向下一个的指针赋值给q,再释放掉p

    3.之后再将q赋值给p,用来找到下一轮释放掉的结点的下一个结点

    代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Node
    {
        char date;
        struct Node *next;
    }Node , *LinkList;
    //创建链表
    LinkList creat_linklist(int n)
    {
        LinkList New_node,Tail_node;
        LinkList Head_node = NULL;
        char c;
    
        for (size_t i = 0; i < n; i++)
        {
            printf("请输入在第%d个结点存入的数据:",i+1);
            scanf("%c",&c);
            fflush(stdin);
            New_node = (LinkList)malloc( sizeof(Node) );
            New_node->date = c;
            New_node->next = NULL;
    
            if (Head_node == NULL)
            {
                Head_node = New_node;
            }else
            {
                Tail_node->next = New_node;
            }
            Tail_node = New_node;
        }
        return Head_node;
    }
    //销毁链表
    void destoryLinkList(LinkList *List)
    {
        LinkList p,q;
        p = *List;
        while (p)
        {
            q = p->next;
            free(p);
            p = q;
        }
        *List = NULL;
    }
    int main()
    {
        int n;
        char c;
        LinkList List , List2;
        //List用于第一次打印单链表,List2用于第二次打印单链表
        printf("请输入结点个数:");
        scanf("%d",&n);
        fflush(stdin);
        List = creat_linklist(n);
        List2 = List;//复制一遍链表,第一次打印链表后链表后头指针会直接指向NULL,导致第二次打印失败
        printf("打印单链表:");
        while ( List != NULL )
        {
            printf("%c" , List->date);
            List = List->next;
        }
        putchar('
    ');
        printf("即将销毁链表,请按任意键确认!");
        getchar();
        destoryLinkList(&List2);
        if (List2 == NULL)
        {
            printf("链表已被销毁!");
        }else
        {
            while ( List2 != NULL )
            {
                printf("%c" , List2->date);
                List2 = List2->next;
            }
        }
        return 0;
    }
    

      

    运行结果:

  • 相关阅读:
    【Rust】元组匹配
    数据结构之选择排序 安静点
    数据结构之归并排序 安静点
    数据结构之插入排序 安静点
    数据结构之冒泡排序 安静点
    今日进度
    今日进度
    今日进度
    今日进度
    今日进度
  • 原文地址:https://www.cnblogs.com/jerryleesir/p/13306312.html
Copyright © 2020-2023  润新知