标题:数据结构出入栈练习,输入一个十进制数,转换为八进制输出
只看楼主
sally02468
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:17
专家分:14
注 册:2015-10-17
结帖率:100%
 问题点数:0 回复次数:0 
数据结构出入栈练习,输入一个十进制数,转换为八进制输出
题目:键盘输入一个十进制数,将其转换为八进制数,输出转换后的数。
例如:(1348)10 =(2504 )8
1.将元素取余入栈。
2.将元素出栈。


有一个错误,怎么改都不对

#include<stdio.h>
#include<stdlib.h>
#define ERROR  0
#define OK 1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

//输入任意一个非负十进制整数,打印输出与其等值的八进制数
void conversion(int N){
InitStack(S);//构造空栈
SElemType e;
   SqStack s;
scanf("%d",N);
while(N){
    Push(S,N%8);
    N=N/8;
}
while(!StackEmpty(S)){
    Pop(S,e);
    printf("%d",e);
}

}//conversion

//构造一个空栈S
int InitStack(SqStack S){
    S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
    if(!S.base)exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
    return OK;
    }//InitStack

int Push (SqStack S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){
    S.base=(SElemType *)realloc(S.base,
      (S.stacksize+STACKINCREMENT)* sizeof(SElemType));
      if(!S.base)exit(OVERFLOW);
      S.top=S.base+S.stacksize;
      S.stacksize+=STACKINCREMENT;

}
* S.top++=e;
return OK;
}//Push

int Pop(SqStack S,SElemType e){
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR;
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;
}//Pop

int  main(){
int N;
//scanf("%d",&N);
conversion(N);
print(N);
return 0;
}
搜索更多相关主题的帖子: conversion include 八进制 十进制 
2015-11-25 21:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459604-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.334515 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved