链表和队列-队列和链表的销毁问题

问题描述

队列和链表的销毁问题

void DestoryQueue(LinkQueue *q)
{
while(q->front)
{
q->rear = q->feont->next;
free(q->front);
q->front = q->rear;
}
}

void DestoryLinkList(LinkList *L)
{
free(L);
}

请问大神们,为什么队列的销毁和链表的销毁不一样啊?队列直接用free(q);不行吗?

解决方案

队列是一种数据结构,其特点是先进先出,后进后出;队列的存储方式可以使用线性表进行存储,也可以使用链表进行存储。 所以是否使用那种方式释放内存,
主要还是看你自己怎么创建到有关系,只要保证内存不泄漏,你怎么释放都没事

解决方案二:

这个销毁跟你创建队列或者链表的方式相关。销毁的时候必须把每一个你创建的节点的内存都给释放掉,以防止内存泄漏。

时间: 2024-11-01 20:51:31

链表和队列-队列和链表的销毁问题的相关文章

线性链表及其基本操作及用链表实现的多项式

线性链表及其基本操作 链表在空间的合理利用上和插入.删除时不需要移动等优点,因此在很多场合下,它是线性表的首先储存结构.然而它也存在着实现某些基本操作,如求线性表的长度时不如顺序储存结构的特点.因而从新定义线性链表及其基本操作 头文件: #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define MYOVERFLOW -2 typedef int Status; typedef

用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环。

问题描述 用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环. 用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环. 解决方案 如果链表有环,永远算不出来 只能假定,这个链表不是环形链表,也没有环 简单事情用递归做是低效率的,即便学习递归,也是不必要的 递推, 可以用递归实现 也可以用迭代实现 前者无循环,后者有 解决方案二: int listLength(List *l) { if(l->next!=NULL) { l=l->next; ret

c语言-编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表

问题描述 编写一程序,将带头结点的单链表拆成一个奇数链表和一个偶数链表 要求用C语言来做!! 解决方案 http://zhidao.baidu.com/link?url=5XqMAQVb1yS0vaNF3QXC9fQPICC-JgqN0lisYvRQHwzYF8jb3ek3ouh_2TG3NKa4eanjSv4illaaV1znE-nkuq 解决方案二: BaiDu:将带头结点的单链表拆成一个奇数链表和一个偶数链表 你会得到很多你想要的. 解决方案三: 这个简单,可以看看面试宝典

数据结构实验之链表一:顺序建立链表(构造函数)

数据结构实验之链表一:顺序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据. Input 第一行输入整数的个数N: 第二行依次输入每个整数. Output 输出这组整数. Example Input 8 12 56 4 6 55 15 33 62 Example Output 12 56 4 6 55 15 33 62 Code rea

数据结构实验之链表一:顺序建立链表

数据结构实验之链表一:顺序建立链表 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据. Input 第一行输入整数的个数N: 第二行依次输入每个整数. Output 输出这组整数. Example Input 8 12 56 4 6 55 15 33 62 Example Output 12 56 4 6 55 15 33 62 Code rea

链表-关于数据结构队列问题

问题描述 关于数据结构队列问题 2C 用队列做一个模拟抢红包的小程序,但现在还没有思路,望前辈不吝啬赐教之,谢谢. 解决方案 数据结构之队列数据结构--队列实现舞伴配对问题数据结构-栈和队列

单链表-在cfree上关于链表的问题这个怎么做

问题描述 在cfree上关于链表的问题这个怎么做 ? 键盘输入一个正整数n(10-20之间). ? 构造单链表, 单链表的结点数目为输入的n(不包括 head结点). – 每个结点的data域的内容是随机产生的整数. ? 显示单链表的内容. ? 编写函数listMax, 找出数值最大的结点, 并显示其 位置及数值. – bool listMax(List &L); 解决方案 如果你想得到代码,请先采纳答案.最近留个问题拍拍屁股就跑的人太多了. 解决方案二: 键盘输入一个正整数n(10-20之间)

单链表-利用原空间把链表反转

问题描述 利用原空间把链表反转 请问大家,如果我用头插法新建好了一个单链表,当我们想利用原空间把链表反转的 时候,我下面标注(1)和(2)是什么意思? (1)这样设定,不是把p->next和p指向一起了吗? //反转链表 void reverse(linklist L,int n) { linklist p,r; p=L->next; int i; for(i=1;i<=n;i++) { r=p->next; p->next=L->next; (1)--// 什么意思?

【万字总结】图解堆算法、链表、栈与队列(多图预警)

堆算法 什么是堆 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小.但很重要的作业,同样应当拥有优先权.而堆就是为了解决此类问题而设计的数据结构. 二叉堆是一种特殊的堆,二叉堆是完全二叉树或者近似完全二叉树,二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆. 当父节点的键值