栈和队列的应用 2-8进制转换

来源:百度知道 编辑:UC知道 时间:2024/05/21 18:12:46
输入一个数 再输入想转换的进制(2或8)回车出结果应该怎么改程序?我这个编出来的是错误的

#define MAXSIZE 100

#include<stdlib.h>

struct stack{

int data[MAXSIZE];

int top;

int r;
};

void init(struct stack *s){

s->top=-1;

}

int empty(struct stack *s){

if(s->top==-1)

return 1;

else

return 0;

}

void push(struct stack *s,int i){

if(s->top==MAXSIZE-1){

printf("Stack is full\n");

return;

}

s->top++;

s->data[s->top]=i;

}

int pop(struct stack *s){

if(empty(s)){

printf("stack is empty");

return -1;

}

return(s->data[s->top--]);

}

void trans(int num){

struct stack

//我今天写的一个,你看看把
#include<stdio.h>
#include<stdlib.h>

typedef struct {
int *base;
int *top;
int StackSize;
}Stack;

void StackInit(Stack *s)
{
s->base=(int *)malloc(sizeof(int)*10);
s->top=s->base;
return ;
}

void StackPush(Stack *s,int e)
{
*s->top++=e;
return;
}

void StackPop(Stack *s,int *e)
{
*e=*--s->top;
return;
}

int StackEmpty(Stack *s)
{
if(s->top==s->base) return 1;
else
return 0;
}

void StackHexconver(Stack *s) //这里发现一个问题就是当嵌套的函数作为形参的时候就要按照原来的形态
{
int e=-1;
int x=0,y=0; //x:输入的数,y:按照要求的进制
printf("输入要转换的数以及相应的进制\n");
scanf("%d %d",&x,&y);
while(x)
{
StackPush(s,x%y); //是s不是&s
x=x/y;
}
while(!StackEmpty(s)) //是s不是&s 这里注意
{
StackPop(s,&e);<