| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:用栈实现十进制转换为八进制
取消只看楼主 加入收藏
语林风
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-10-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
用栈实现十进制转换为八进制
首先,建立两个自定义的.h文件 conn.h 和stack.h
 conn.hstack.h:#ifndef conn_h_
#define conn_h_
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int status;
#endif

stack.h中的内容:#ifndef _stack_h_
#define _stack_h_
#define stack_init_size 100
#define stackincrement 10

typedef int selemtype;
typedef int status;


typedef struct{
    selemtype *base;
    selemtype *top;
    int stacksize;
}sqstack;
status initstack(sqstack &s);
status push(sqstack &s,selemtype e);
status pop(sqstack &s,selemtype &e);
status stackempty(sqstack s);

#endif


在建立两个.cpp文件 stack.cpp和test.cpp
stack.h中的内容:
#include "stdafx.h"
#include "stdlib.h"
#include "conn.h"
#include "stack.h"
status 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;
}
status gettop(sqstack s,selemtype &e){
    if (s.top==s.base) return ERROR;
    e=*(s.top-1);
    return OK;
}
status stackempty(sqstack s){
    return s.base==s.top;
}

status push(sqstack &s,selemtype e){
    if(s.top-s.top>=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;
}

status pop(sqstack &s,selemtype &e){
    if(s.top==s.base)return ERROR;
    e=*--s.top;
    return OK;
}

test.cpp中的内容为:
// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "stack.h"
#include "conn.h"
void conversion(){
    int n;
    int e;
    sqstack s;
    initstack (s);
    printf("请输入十进制的数");
    scanf("%d",&n);
    while(n){
        push(s,n%8);
        n=n/8;
    }
    printf("对应的八进制数为\n");
    while(!stackempty(s)){
        pop(s,e);
        
        printf("%d",e);
        
    }
      
}

int main(int argc, char* argv[])
{
    conversion();
    return 0;
}
即可快速实现!
搜索更多相关主题的帖子: status 八进制 十进制 
2013-10-28 21:59
快速回复:用栈实现十进制转换为八进制
数据加载中...
 
   



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

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