请完成以下顺序栈的初始化操作算法。(注意:填空时严格区分大小字母,不要随便加空格,括号一定是用西文的括号)顺序栈的存储结构描述:typedef struct {SElemType *base; // 栈的存储空间基地址(栈底指针)SElemType *top ; //指示栈顶元素的下一存储单元的位置(栈顶指针)int stacksize; //栈当前的存储空间容量}SqStack;#defineSTACK_INIT_SIZE 100 //预定义栈的初始容量Status InitStack( SqStack &S)// 创建一个空的顺序栈S{S.base = ____;// 分配预定义大小的存储空间if (!S.base)//如果空间分配失败exit(OVERFLOW);S.top=____;//置当前栈顶指针指向栈底的位置____ =STACK_INIT_SIZE; //置当前分配的存储空间容量为STACK_INIT_SIZE的值return OK;}
查看答案
请完成以下顺序栈的入栈操作算法Status Push(SqStack &S, SElemType e)// 在顺序栈S中插入新的元素e, 使其成为新的栈顶元素{ if (____) //当前存储空间已满,则扩充空间{ S.base = (SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof (SElemType));if (!S.base) //如果空间分配失败exit(OVERFLOW);S.top = ____; //修改增加空间后的基址S.stacksize += STACKINCREMENT; //修改增加空间后的存储空间容量}____; //e压栈,并将top指针再后移一位return OK;}
请完成以下顺序栈的出栈操作算法。Status Pop(SqStack &S, SElemType ____)// 删除顺序栈S中的栈顶数据元素,并用e返回其值{if (____) //如果栈空{ printf("The Stack is NULL!\n");return ERROR;}e=____; //删除栈顶元素并用e返回其值return OK;}
请完成以下求链栈的长度操作算法。int StackLength(LinkStack S)//返回链栈中数据元素的个数{ int length=____;//引进一个记载长度的变量,并赋初值LinkStack p=S;//引进p 指针, 使其指向链栈中第一个元素结点while(____){ ____;//长度加1p=p->next;//p指针后移}return length;}
请完成以下链栈的入栈操作算法。Status Push(LinkStack &S, SElemType e)// 在链栈S的栈顶插入新的元素e,使其成为新的栈顶元素{ LinkStack p=____; //产生新的结点if (!p)//空间分配失败return ERROR;p->data=e;____;//修改链,让新结点插入链栈的栈顶____;//栈顶指针指向新的栈顶结点return OK;}