数据结构与算法第24讲销毁链表这里好像有问题
本帖最后由 圣狄雅哥 于 2018-1-29 10:41 编辑DestroyStack(sqStack *s){
int i, len;
len = s->stackSize;
for( i=0; i < len; i++ ){
free( s->base );
s->base++;
}
s->base = s->top = NULL;
s->stackSize = 0;
} 栈底base是指针,删除了那还怎么指向下一个结点呢 同问,本来理解这里的s->base是指针对应的元素,在后面又看见要++就不知道是什么了{:10_266:} 独孤呆博 发表于 2018-1-30 22:37
同问,本来理解这里的s->base是指针对应的元素,在后面又看见要++就不知道是什么了
s->base应该是指针,相当于(s->base)++,就指向下一个元素的位置了 DestroyStack(sqStack *s)好像真的有问题
@小甲鱼
typedef int ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int stackSize;
}sqStack;
#define STACK_INIT_SIZE 100
initStack(sqStack *s)
{
s->base = (ElemType *)malloc( STACK_INIT_SIZE * sizeof(ElemType) );
if( !s->base )
exit(0);
s->top = s->base; // 最开始,栈顶就是栈底
s->stackSize = STACK_INIT_SIZE;
}
#define SATCKINCREMENT 10
Push(sqStack *s, ElemType e)
{
// 如果栈满,追加空间
if( s->top – s->base >= s->stackSize )
{
s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType));
if( !s->base )
exit(0);
s->top = s->base + s->stackSize; // 设置栈顶
s->stackSize = s->stackSize + STACKINCREMENT; // 设置栈的最大容量
}
*(s->top) = e;
s->top++;
}
Pop(sqStack *s, ElemType *e)
{
if( s->top == s->base )// 栈已空空是也
return;
*e = *--(s->top);
}
ClearStack(sqStack *s)
{
s->top = s->base;
}
DestroyStack(sqStack *s)
{
int i, len;
len = s->stackSize;
for( i=0; i < len; i++ )
{
free( s->base );
s->base++;
}
s->base = s->top = NULL;
s->stackSize = 0;
}
int StackLen(sqStack s)
{
return(s.top – s.base);// 初学者需要重点讲解
}
人造人 发表于 2018-1-31 20:16
DestroyStack(sqStack *s)好像真的有问题
@小甲鱼
已经 MARK DOWN,这个系列重录时必须改正错误。 小甲鱼 发表于 2018-1-31 23:04
已经 MARK DOWN,这个系列重录时必须改正错误。
哦
页:
[1]