那么在编程时,可以用一个变量保存栈元素的个数。栈是否橘运满,取决于申请动态内存时的返回值,如
Stack *p = (Stack *)malloc(sizeof(Stack));,若(p == NULL),则栈满。
表示顺序栈的数组下标如果从0开始,栈空的条件是top==-1,栈肆绝轮满的条件是top==maxsize-1;如果从1开始,top==1表示栈空,top==maxsize表示栈满。
栈的元素依次存放在一个一维数组中。下标小的一端作为栈底。用一个变量记录栈顶位置,称“栈顶指针”。
扩展资裂信料:
栈的顺序存储结构是利用内存中的一片起始位置确定的连续存储区域来存放栈中的所有元素,另外为了指示栈顶的准确位置,还需要引入一个栈顶指示变量top,采用顺序存储结构的栈称为顺序栈(sequence stack)。
设数组data[MAXSIZE]为栈的存储空间,其中MAX-SIZE是一个预先设定的常数,为允许进栈结点的最大可能数目,即栈的容量。初始时栈空,top等于0。当top不等于0时,data[0]为栈底元素,即为当前停留在栈中时间最长的元素。
而data[top-1]为最后入栈的元素,即为栈顶元素。当top==MAXSIZE时,表示栈满,如果此时再有结点进栈,将发生称之为“上溢”(语法上表现为“数组越界”)的错误,而当top==0时再执行出栈 *** 作,将发生称之为“下溢”的错误。
给出了栈容量为6时,入栈、出栈 *** 作以及栈空、栈满等几种典型的栈状态。由于顺序存储结构多采用一维数组存放栈,因此必须特别注意“栈上溢”错误的发生;在实现入栈 *** 作时,先判断是否栈满(stack full),如果栈满,及时处理。
参考资料来源:百度百宏李科-顺序栈
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)