数据结构之栈的进制转换(10进制-- > 8进制 )

#include<iostream>
#include<stdlib.h>
#include<malloc.h>
#include<stdio.h>
#define max 100
using namespace std;
typedef struct
{
int stack[max];
int top;
}seqstack;
void init(seqstack *l)
{
l->top=-1;
}
int empty(seqstack s)
{
if(s.top==-1)
{
printf("栈空");
return 1;
}

else
{
printf("栈没空");
return 0;
}
}
int top(seqstack l,int *s)
{
if(l.top<0)
{
printf("栈已空!\n");
return 0;
}
{
*s=l.stack[l.top];
return 1;
}
}

int push(seqstack *s,int x)
{
if(s->top>=max)
{
printf("栈已满,不能进栈!\n");
return 0;
}
else
{
s->top++;
s->stack[s->top]=x;
return 1;
}
}

int pop(seqstack *s,int e)
{
if(s->top==-1)
{
printf("栈已空");
return 0;
}
else
{
e=s->stack[s->top];
printf("%d",e);
s->top--;
return 1;
}
}
void dis(seqstack l)
{
while(l.top>-1)
{
printf("%d ",l.stack[l.top]);
l.top--;
}
printf("\n");
}

 


int main()
{
seqstack l;
int e;int n;int x;
printf("请输入一个数:");
scanf("%d",&n);
//seqstack *s
//s=(seqstack*)malloc(sizeof(seqstack))
//必须要动态分配否则指针用完被释放
//
//使用指针只是复制一份形参 在被调函数运行完就会失效
//但是取址是址传递 改变了值
init(&l);
while(n>0)
{
e=n%8;
push(&l,e);
n=n/8;
}
while(l.top>=0)
{
pop(&l,x);

}
return 0;
}

//测试数据3467

 

posted @ 2017-01-18 22:43  mykonons  阅读(1308)  评论(0编辑  收藏  举报