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

摘要:
标准时间>LinkListHead_节点=空;i<New_node=(LinkList)malloc(sizeof(node));日期=c;p=*列表;自由(p);}*列表=NULL;}intmain(){intn;charc;List2;fflush(stdin);List=creat_linklist(n);List=List->

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

  

运行结果:

数据结构C语言实现----销毁链表第1张

免责声明:文章转载自《数据结构C语言实现----销毁链表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于WIN7输入法的小问题C语言--isspace()函数实现下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HashMap之原理及死锁

一、HashMap原理 1.HashMap的本质就是数组和链表。table是一个entry数组,每一个数组元素保存一个Entry节点,而Entry节点内部又连接着同样key的下一个Entry节点,就构成了链表。. 详情见 HashMap源码分析 2.HashMap死锁原因: HashMap会造成死锁,因为HashMap是线程非安全的,多并发的情况...

【学习总结】《大话数据结构》- 第6章-树

【学习总结】《大话数据结构》- 总 第6章树-代码链接 启示: 树 目录 6.1 开场白 6.2 树的定义 6.3 树的抽象数据类型 6.4 树的存储结构 6.5 二叉树的定义 6.6 二叉树的性质 6.7 二叉树的存储结构 6.8 遍历二叉树 6.9 二叉树的建立 6.10 线索二叉树 6.11 树、森林与二叉树的转换 6.12 赫夫曼树及其应用 6...

xml根据属性去重。如csprj去重

public static void distinct(string filePath) { //1、创建XML文档对象 XmlDocument doc = new XmlDocument(); //2、加载指定路径的XML do...

Linux 环境下 node 以及 jit 的简单环境配置说明

注意事项: 1. 注意这个包需要实时更新. 2. 更新时需要按照目录覆盖文件. 3. 谁负责谁治理的态度, 有更新,需要完整的进行覆盖安装. 建议先删除旧文件, 替换新文件. 4. 为了简单起见, 直接将部署文件放到了 /nodejs 这个目录下面 1. 解压缩文件到相应的路径, 如图示 建议方法为 直接将压缩包放到 / 目录下面 执行命令 t...

NodeJS (npm) 学习笔记

零, npm是nodeJS的包管理器,下载nodeJS后会自动安装好npm. npm 常用命令: ※,npm config list 查看所有配置信息 ※,npm list -g --depth 0: 查看所有已安装的包以及其所在的目录。 npm list -g typescript@3.1.3 查看typescript的信息。 ※,npm start...

Code Tips: 线程读写锁自旋导致的死循环

发现问题        项目测试的时候,发现运行一段时间后会出现cpu百分之百的情况。     想着可能是哪里出现了死循环,于是打算用gdb跟一下,结果gdb居然无法attach到进程。 定位问题     查了查去,原来有一个优先级为RT的实时线程出现了死循环,并且由于配置了CPU的亲和属性,使得进程只运行在第一个核上,此时gdb就无法attach了   ...