社区
数据结构与算法
帖子详情
算法与数据结构 (第2版) 数据结构的一个疑问
wasltone
2005-04-07 05:14:48
算法与数据结构 (第2版) 数据结构的一个疑问
他用指针完成一个栈,栈的MAKENULL操作,就是把栈变为空栈的操作,
原文代码就把头指针指向尾指针,并没有删除数据
那原来插入的数据并没有在内存中删除,不是会造成内存超出,越来越大么?
...全文
176
21
打赏
收藏
算法与数据结构 (第2版) 数据结构的一个疑问
算法与数据结构 (第2版) 数据结构的一个疑问 他用指针完成一个栈,栈的MAKENULL操作,就是把栈变为空栈的操作, 原文代码就把头指针指向尾指针,并没有删除数据 那原来插入的数据并没有在内存中删除,不是会造成内存超出,越来越大么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
deKnuth
2005-04-08
打赏
举报
回复
刚才理解错了,这个应该是保留栈的起始地址,内存可以被其他程序使用,而如果这个栈再被启用的话就可以直接用原先保留的地址进行操作。
deKnuth
2005-04-08
打赏
举报
回复
那个是建立空栈的操作啊,不是清空栈
Knuthocean
2005-04-07
打赏
举报
回复
PUSH过程如下,每次New了一个空间
procedure Push(x:integer;S:Stack);
var
p:^Stack;
begin
new(p);
p^.element:=x;
p^.next:=S;
S:=p;
end;
type
stack=record
top:integer;
elements:array[1..max] of integer
end
这好像有矛盾吧!!
Knuthocean
2005-04-07
打赏
举报
回复
不会的,用数组表示的时候你预先就已经分配好了内存,你只能用S.top=S.bottom来逻辑上表示栈空,这个静态数组不会去动态分配内存!!
整个栈的操作过程中如果数据太多就溢出,数据很少时栈中可用的空间就是预先分配好的,如果你在栈操作过程中还使用动态分配内存,那就没有必要用数组表示了,直接用list不更好吗?
不知道这样说楼主明白不?
wasltone
2005-04-07
打赏
举报
回复
看错了,不过问题还是存在,他里面写的是队列但是还是没有Dispose。。。
不过是栈还是队列,都应该要Dispose阿//
下了,明天来讨论
wasltone
2005-04-07
打赏
举报
回复
对阿,可是...MAKENULL里面没有Dispose。。。
这说明什么,当Stack很大的时候,无数次MAKENULL却没有删除数据。。。。
这,真的是我发现的算法漏洞么?
你QQ多少,明天来了继续联系,今天可能要下了
晨星
2005-04-07
打赏
举报
回复
new出来的东西是要dispose的呀。
wasltone
2005-04-07
打赏
举报
回复
我正在试验MAKENULL以后的老指针还有没有用,
可是大家一致都这样用,而且书上也这样。。。
不会吧?
晨星
2005-04-07
打赏
举报
回复
如果真是这样,那就真的是这个算法有问题了。
wasltone
2005-04-07
打赏
举报
回复
PUSH过程如下,每次New了一个空间
procedure Push(x:integer;S:Stack);
var
p:^Stack;
begin
new(p);
p^.element:=x;
p^.next:=S;
S:=p;
end;
wasltone
2005-04-07
打赏
举报
回复
对不起,我弄错了。。楼上这个才是指针链表表示法,我打成了数组了
wasltone
2005-04-07
打赏
举报
回复
指针表示的Stack定义
type
stack=record
next:^stack;
elements:integer
end
每次压入一个数据,Next指针就申请一个空间,现在关键问题是,这些空间什么时候被删除了?
晨星
2005-04-07
打赏
举报
回复
elements:array[1..max] of integer
这不明明是数组实现的栈么?
wasltone
2005-04-07
打赏
举报
回复
原书的程序
Procedure MAKENULL(var S:Stack)
begin
S.top:=0;
end;
Stack的定义如下
type
stack=record
top:integer;
elements:array[1..max] of integer
end
wasltone
2005-04-07
打赏
举报
回复
逻辑清空?存到现有的程序中?
他是通过new()申请到的空间,况且Makenull过程中也没有dispose()函数过[Dispose相当于C++的Delete],通过new()申请到的,程序也没有Dispose,他怎么会自己清空?
gRempCH_eNter
2005-04-07
打赏
举报
回复
不会溢出吧,以后加入的内容,可以存到现有的内存中!
晨星
2005-04-07
打赏
举报
回复
看不出是使用链表。
即使用链表,也可以不清空,只要逻辑上“清空”就可以了。
wasltone
2005-04-07
打赏
举报
回复
源代码不是一句话就搞定的?
procedure makenull(S:stack);
begin
s.top:=s.bottom;
end
PASCAL描述
s是栈,top是头指针 bottom 是尾指针。。。
这么简单还要看代码?
chenyec
2005-04-07
打赏
举报
回复
把原代码贴出来啊!这样怎么回答你的问题啊!
wasltone
2005-04-07
打赏
举报
回复
我说的就是用链表,他用指针的...
Makenull时候又没有Dispose()过,删掉指针申请来的空间。
这样不是会使数据仍然存于内存中么?
加载更多回复(1)
数据结构
与算法分析(java语言描述)中文第二
版
以及习题答案
本资源包含了三本书的电子
版
,分别是《
数据结构
与算法分析(Java语言描述)中文第二
版
》、《
数据结构
与算法(Java语言描述)中文第二
版
》以及配套的习题答案,为学习者提供了全面的学习材料。 1. **
数据结构
**:...
MoreWindows白话经典算法之七大排序第2
版
(高清)
本书《更多Windows白话经典算法之七大排序第2
版
》是一部深入浅出讲解七种经典排序算法的著作,旨在帮助读者理解并掌握冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序以及堆排序等基本概念和...
【最详细】
数据结构
(C语言
版
第2
版
)课后习题答案全集 严蔚敏 等 编著
【最详细】
数据结构
(C语言
版
第2
版
)第一章课后习题答案 严蔚敏 等 编著 【最详细】
数据结构
(C语言
版
第2
版
)第二章课后习题答案 严蔚敏 等 编著 【最详细】
数据结构
(C语言
版
第2
版
)第三章课后习题答案 严蔚敏 ...
【
数据结构
与算法】常见
数据结构
及基本操作
数据结构
与算法常见概念2.数据逻辑结构2.1线性结构2.2树形结构2.3图形结构2.4集合结构3.排序算法冒泡排序简单选择排序直接插入排序希尔排序堆排序归并排序快速排序4.查找算法顺序表查找有序表查找线性索引查找二叉...
数据结构
与算法分析:C语言描述(原书第2
版
) PDF
数据结构
与算法分析:C语言描述(原书第2
版
)是《data structures and algorithm analysis in c》一书第2
版
的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者mark allen weiss在
数据结构
和算法分析...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章