2 sinat 34927324 sinat_34927324 于 2016.05.11 23:34 提问

顺序栈中的清空栈的函数

清空栈函数函数体中为何另top=-1,就可清空栈,栈的数据元素不还在内存里吗?怎么能算清空

5个回答

wll1228
wll1228   2016.05.12 07:16
已采纳

数据虽然还在原来的位置没有消失,但是已经不属于栈的管理范围了

beifengche
beifengche   2016.05.12 15:30

数组实现的数据还在,在计算机中很多时候都是这样的思想,top= -1就表示了栈已经为空了。比如说当我们删除一个文件时我们直接删除文件的索引,就认为这个文件删除了,但文件的本身的内容并没有删除。

caozhy
caozhy   Ds   Rxr 2016.05.11 23:34

看你是怎么实现的堆栈,如果是数组,这么做就可以了。如果是动态分配的空间,这么做会造成内存泄漏。

sinat_34927324
sinat_34927324 嗯嗯,顺序栈就是栈基于数组的存储表示嘛
大约 2 年之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.05.12 08:33

数据虽然还在并且没有被清空,但是你的top=-1的时候,如果有元素入栈会+1以后从0的位置覆盖掉原来的数据
输出的时候也只会输出到top的位置,清不清空都对结果没有什么影响

VisualEleven
VisualEleven   Ds   Rxr 2016.05.12 17:48

数据虽然还在,但是对你来说已经无效了~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据结构中顺序栈的基本函数运用,包括创建空栈,初始化,清空,销毁,增加,删除,遍历等函数
数据结构之栈的运用
顺序栈的初始化,进栈、出栈、求长、判空、访顶、遍历、清空、销毁
顺序栈即栈的顺序存储结构,它利用一组地址连续的存储单元存放自栈底到栈顶的元素,是一种后进先出(last in first out,LIFO)的线性表。      判断栈不存在的条件为:S.base=NULL;      空栈:S.base=S.top;       满栈:S.top-S.base=S.stacksize;  #include "stdafx.h" #include
栈操作包括入栈,出栈,清空栈,销毁栈等
#include #include #include #define OVERFLOW -1 #define STACK_INIT_SIZE 10 #define STACKINCREMENT 2 #define OK 1 #define ERROR 0 #define TRUE 1 #define FA
[数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作
/* 顺序栈 栈的抽象数据类型 ADT 栈(stack) Data 同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系 Operation InitStack(*S):初始化操作,建立一个空栈S DestroyStack(*S):若栈存在,则销毁它 ClearStack(*S):将栈清空 StackEmpty(S):若栈为空,返回true,否则返回fal
顺序栈的(创建、出入栈、取栈顶、判断栈空)C语言实现
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应的,表头端称为栈底(bottom)。不含元素的空表称为空栈。 假设栈S=(a1, a2, ….,a3),则称a1为栈底元素,an为栈顶元素,栈中元素按a1,a2,…,an的次序进栈,退栈的第一个元素应该为栈顶元素。换句话说,栈的修改是按照先进后出的原则进行的,因此,栈又称为
C# 代码实现 顺序栈和链栈
自己定义的栈的接口,完全是按照栈的常用方法以及命名方式实现: 注意以下类,接口都是在一个命名空间下,,,栈的接口:包括了常用的方法,,,namespace 栈 { interface IStackDS<T> { int Count { get; } int GetLength(); bool IsEmpty(); v
顺序栈运算置空/判空/出栈/入栈/读栈顶元素
#include #include #include #define MAXSIZE 100 using namespace std; //顺序栈的运算 //顺序栈的类型 struct seqstack{ int top ; int data[MAXSIZE] ; }; //置空栈 void setnull(struct seqstack *s){ s->top = -1
链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
#include using namespace std; typedef struct node { int data; struct node*next; }Node, *stack; //初始化栈 void initialsatck(stack &s) { s = new Node; s->next = NULL; } //判断栈是不是空的 bool isempty(stack &
【数据结构】C语言实现栈的进栈,出栈,遍历,清空等操作
#include #include #include // 定义一个节点的结构 typedef struct node { int member; //数据域 struct node * pNext;//指针域 }Node,*pNode; // 定义一个栈结构 typedef struct stack { pNode Top; //栈顶 p
栈的基本实现(入栈,出栈,清空,判断是否为空)
#include #include typedef struct Node { int data; struct Node *pNext; }NODE, *PNODE; typedef struct Stack { PNODE pTop; PNODE pBottom; }STACK, *PSTACK; void init(PSTACK pS) { pS->pTop = (PNO