数据结构遍历顺序栈_⼩蚂蚁学习数据结构(28)——题⽬
脚凉怎么调理——顺序栈的遍历输出...
已知栈的顺序存储结构定义如下:
typedef int SElemType;
typedef struct{
SElemType * ba;
SElemType * top;
int stacksize;
}SqStact;
下⾯是依次弹出栈中的所有元素、并逐个输出的类C_算法,操作的结果使栈变成空栈,请填空
void Pop_Print_Sq(SqStack &S);
/
*
顺序栈的操作
题⽬要求:依次弹出栈中元素、并逐个输出的类C算法。
*/
# include
# include
# define ERROR 0给大一新生的寄语
# define OK 1
# define STACK_INIT_SIZE 5
# define STACKINCREMENT 1
typedef char Elemtype;
typedef int Status;
typedef struct stack
{
Elemtype * ba;//栈底指针
Elemtype * top;//栈顶指针
int stacksize;//栈总空间
}SqStack;
//栈操作函数前置声明
//初始化⼀个栈
Status InitStack( SqStack & );
Status DestroyStack( SqStack & );抢救制度
/
/清空这个栈
Status ClearStack( SqStack & );
//判断这个栈是否为空
bool StackEmtpy( SqStack & );
//返回这个栈的长度
汕头特色小吃Status StackLength( SqStack & );
//得到栈顶元素
Status GetTop( SqStack &, Elemtype & );
//往栈中压⼊⼀个元素
Status Push( SqStack &, Elemtype );
//弹出⼀个元素,并且返回弹出元素的值
Status Pop( SqStack &, Elemtype & );
//遍历整个栈
Status StackTraver( SqStack & );
//题⽬要求的函数房子折纸
void Pop_Print_Sq( SqStack & );
//初始化这个栈
Status InitStack( SqStack & S )
{
/*
为栈指针分配空间
PS:malloc分配空间这⾥,超出后也正常的原因需要重点标注⼀下。
*/
S.ba = ( Elemtype * )malloc( sizeof( Elemtype ) * STACK_INIT_SIZE ); if( NULL == S.ba )
{
printf( "动态空间分配失败\n" );
return ERROR;
}
S.stacksize = STACK_INIT_SIZE;
return OK;
//向栈中压⼊⼀个元素
Status Push( SqStack & S, Elemtype val)
{
if( S.top - S.ba >= S.stacksize )
{
//如果存储空间已满,就需要增加新的空间
S.ba = ( Elemtype * )realloc( S.ba, ( S.stacksize + STACKINCREMENT ) * sizeof( Elemtype ) ); if( NULL == S.ba )
{
printf( "动态空间分配失败\n" );
return ERROR;
}
/*
重新设定栈顶指针top,因为之前top指向的是⼀个不属于⾃⼰的空间,
现在新开辟了⼀个属于⾃⼰的空间,所以重新指定⼀下
万⼀地址换了也是有可能的!
*/
什么什么之地S.top = S.ba + S.stacksize;
//修改结构体中,空间的总⼤⼩
S.stacksize = S.stacksize + STACKINCREMENT;
}
*S.top = val;
return OK;
猜灯谜大全及答案儿童
}
/
/遍历整个栈
Status StackTraver( SqStack & S )
{
if( S.top == S.ba )
{
return ERROR;
}
el
Elemtype * p = S.ba;
while( p != S.top )
{
printf( "%c ", *p );
p++;
张丽丽
}
printf( "\n" );
return OK;
}
}
//判断这个栈是否为空
bool StackEmtpy( SqStack & S )
{
if( S.top == S.ba )
{
return true;
}
el
{
return fal;
}
}
//返回这个栈的长度
int StackLength( SqStack & S )
{
p - S.ba;
}
//返回栈顶元素
Status GetTop( SqStack & S, Elemtype & c ) {
if( S.top == S.ba )
{
return ERROR;
el
{
c = *(S.top-1);
}
}
//弹出⼀个元素,并且返回弹出元素的值Status Pop( SqStack & S, Elemtype & c ) {
if( S.top == S.ba )
{
return ERROR;
}
el
{
c = *(S.top-1);
S.stacksize--;
}
}
//清空这个栈
Status ClearStack( SqStack & S )
{
return OK;
}
//销毁这个栈
Status DestroyStack( SqStack & S )
{
/
/释放栈空间
free( S.ba );
//初始化栈结构体
S.ba = NULL;