请完成以下顺序栈的入栈操作算法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;}
请完成以下链栈的出栈操作算法。Status Pop(LinkStack &S, SElemType &e)// 删除链栈S中的栈顶数据元素,并用e返回其值{ if(____){ printf("The Stack is NULL!\n");return ERROR;}LinkStack p=____; //p指针指示链栈的栈顶元素结点e=p->data;//用e保存待删结点的数据元素值____;//栈顶指针S指向原栈顶元素的下一个元素结点free(p); //释放待删结点空间return OK;}