首页 > 试题广场 >

若栈采用链式存储结构,则下列说法中正确的是()

[单选题]
若栈采用链式存储结构,则下列说法中正确的是()
  • 需要判断栈满但不需要判断栈空
  • 不需要判断栈满也不需要判断栈空
  • 需要判断栈满且需要判断栈空
  • 不需要判断栈满但需要判断栈空
炫头像
链栈由于采用了链表的方式作为存储方式,入栈时,使用malloc申请空间后,用指针相连接,所以节点个数没有限制,但是出栈时,如果栈中的元素个数为0,则不能继续出栈,所以需要判断当前栈是否为空
发表于 2016-06-04 13:21:24 回复(0)
栈的链式存储结构: top指针相当于单链表中的头指针,入栈即在链头插入。栈的链式存储简称链栈,没有头结点。top=NULL表示栈为空
栈的顺序存储结构:即用一个StackSize大小的数组来存储整个栈,那么下标为0的元素就是栈底元素,用top变量来指示栈顶元素,因为数组的大小为StackSize,所以0<= top <StackSize当top=0时表示该栈只有一个元素,top=StackSize-1时表示栈满,top=-1时,表示栈为空栈

发表于 2016-03-26 17:42:35 回复(2)
链表不需要判满,只需要判定是否为空即可
发表于 2015-11-25 16:23:21 回复(0)
当无可用空闲内存时,不算栈满吗?
发表于 2017-01-05 23:49:03 回复(1)
链栈由于采用了链表的方式作为存储方式,入栈时,使用malloc申请空间后,用指针相连接,所以节点个数没有限制,但是出栈时,如果栈中的元素个数为0,则不能继续出栈,所以需要判断当前栈是否为空
发表于 2020-06-18 11:52:02 回复(0)
链栈因为是动态分配内存,所以不需要判断栈满(顺序表要),但是要判断栈空。
发表于 2020-02-29 22:09:44 回复(0)
链表栈不需要判断栈满 栈的链式存储结构: top指针相当于单链表中的头指针,入栈即在链头插入。栈的链式存储简称链栈,没有头结点。top=NULL表示栈为空 栈的顺序存储结构:即用一个StackSize大小的数组来存储整个栈,那么下标为0的元素就是栈底元素,用top变量来指示栈顶元素,因为数组的大小为StackSize,所以0<= top <StackSize。当top=0时表示该栈只有一个元素,top=StackSize-1时表示栈满,top=-1时,表示栈为空栈
编辑于 2017-08-13 09:49:23 回复(0)
链栈由于采用了链表的方式作为存储方式,入栈时,使用malloc申请空间后,用指针相连接,所以节点个数没有限制,但是出栈时,如果栈中的元素个数为0,则不能继续出栈,所以需要判断当前栈是否为空
发表于 2020-01-22 23:21:43 回复(0)
对于链栈的出栈pop操作,需要判断栈是否为空。
假设变量p用来存储要删除的栈顶结点,将栈顶指针下移一位,最后释放p即可。

/*若栈不空,删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR*/
Status Pop(LinkStack *S, SElemType *e)
{
	LinkStackPtr p;
	if (StackEmpty(*S))
		return ERROR;
	*e = S->top->data;
	p = S->top;				/*将栈顶结点赋值给p*/ 
	S->top = S->top->next;	/*使得栈顶指针下移一位,指向后移结点*/ 
	free(p);				/*释放结点p*/ 
	S->count--;
	return OK;
 } 


发表于 2019-09-16 22:30:37 回复(0)
不需要判断满:链表的动态增长性,入栈操作向链表中添加新元素,创建一个新的结点,调整相关指针即可。内存限制是更高级别的内存管理机制处理的
需要判断空;如果栈为空,出栈或者查看栈顶元素的时候,会发生未定义行为,可能是访问空指针,从而引发程序崩溃或者错误
发表于 2025-03-02 11:25:02 回复(0)
想要入栈,不需要判满吗,栈满了怎么插入?

发表于 2024-08-15 09:27:53 回复(0)