一、存储结构
栈的顺序存储结构用一组地址连续的存储单元——数组,依次存放自栈底到栈顶的数据元素。
最简单的一种栈的写法如下:
#define MAXSIZE 100
int stack[MAXSIZE];
int top; //栈顶位置
二、基本操作
1、初始化栈
void InitStack()
{
top = -1;
}
2、清空栈
void ClearStack()
{
top = -1;
}
3、取栈顶元素
int GetTop(int &e)
{
if (top == -1)
return 0;
e = stack[top];
return 1;
}
4、入栈
int Push(int e)
{
if(top == MAXSIZE)
return 0;
stack[++top] = e;
return 1;
}
5、出栈
int Pop(int &e)
{
if(top == -1)
return 0;
e = stack[top--];
return 1;
}
6、判断栈是否空
bool StackEmpty()
{
return top == -1;
}
//对于任意一个非负十进制数,打印与之相等的任意进制数
void Conversion(int e)
{
InitStack();
int data;
printf("输入要转换的进制数:");
scanf("%d", &data);
while(e)
{
Push(e % data);
e /= data;
}
int ee;
while(!StackEmpty())
{
Pop(ee);
printf("%d", ee);
}
putchar('\n');
}
C/C++中可直接调用下面这个库函数直接打印进制数:
char *itoa( int value, char *string,int radix);
C++中还可以使用标准库bitset类型。