顺序栈
顺序栈是利用顺序存储结构实现的栈,就是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素。利用顺序栈的特点来实现数制的转换。
代码(数制的转换)
#include<stdio.h>
#define OK 1;
#define ERROR 0;
#define OVERFLOW -2;
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType*base;
SElemType*top;
int stacksize;
}SqStack;
//顺序栈的初始化
Status InitStack( SqStack &S )
{
S.base =new SElemType[MAXSIZE];
if(!S.base)return OVERFLOW;
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
//判断顺序栈是否为空
bool StackEmpty( SqStack S )
{
if(S.top == S.base)
return true;
else return false;
}
//顺序栈进栈
Status Push( SqStack &S, SElemType e)
{
if( S.top - S.base== S.stacksize ) // 栈满
return ERROR;
*S.top++=e;//元素压入栈顶,top+1
return OK;
}
//出栈
Status Pop( SqStack &S, SElemType &e)
{
if( S.top == S.base ) // 栈空
return ERROR;
e= *--S.top;
return OK;
}
//取栈顶元素
Status GetTop( SqStack S, SElemType &e)
{
if(S.top == S.base )
return ERROR; // 栈空
e=*(S.top-1);
return OK;
}
void conversion(int N)
{
SElemType e;
SqStack S;
InitStack(S);
while(N){
Push(S,N%8);
N=N/8;
}
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
printf("/n");
}
int main(){
int i=16;
conversion(i);
}