栈的应用 10进制的转换

来源:互联网 发布:京东大数据认证考试 编辑:程序博客网 时间:2024/05/16 05:46

栈的应用 10进制的转换

c++实现

#include<stdio.h>

using namespace std;
/* typedef struct Stack
{
SElemType *base;//栈底指针构造之前销毁之后,base=NULL
SElemType *top; //栈顶指针
int stacksize;
}Stack;*/
class Stack
{
private:
int *stack_Buffer; //空间指针
int stack_size;
int stack_top;
public :
Stack(int size)
{
stack_size=size;
stack_Buffer=new int[size];
stack_top=0;
}
~Stack()
{
delete []stack_Buffer;
stack_size=0;
}
void ClearStack()
{
stack_top=0;
}
bool EmptyStack()
{
if(0==stack_top) return true;
else return false;
}
bool FullStack()
{
if(stack_size==stack_top) return true;
else return false;
}
int StackNumber()
{
return stack_top;
}
void push(int elem)
{
if(!FullStack())
{
stack_Buffer[stack_top]=elem;
stack_top++;
}
else printf("fullstack");
}
void pop(int &elem)
{
if(!EmptyStack())
{
stack_top--;
elem=stack_Buffer[stack_top];
}
else printf("emptystack");
}
void StackTraverse() 
{
/* for(int i=0;i<stack_top;i++)     //由栈底遍历至栈顶
{
printf(" %i",stack_Buffer[i]);
*/
for(int i=stack_top-1;i>=0;i--) //由栈顶遍历至栈底
{
printf("%i",stack_Buffer[i]);

printf("\n");

};
int main()
{
int N=1348,elem=0;
Stack *stack=new Stack(10);
stack->ClearStack();
printf("10进制:%i\n",N);
printf("10进制转为8进制:");
while(N!=0)        
{

stack->push(N%8);
N=N/8;
}
stack->StackTraverse();
printf("10进制转为16进制:");
while(N!=0)        
{

stack->push(N%16);
N=N/16;
}
stack->StackTraverse();
    /* while(stack->EmptyStack()!=true)
{
stack->pop(elem);
printf("%i",elem);
}   */
delete stack;
return 0;
}
原创粉丝点击