回 帖 发 新 帖 刷新版面

主题:求救

实验目的:1. 掌握栈的思想及存储实现 

          2. 掌握栈的常见算法的程序实现 

实验内容:编写程序实现十进制数向其他进制数的转换(算法3.1) 

实验说明: 

                  类型定义: 

                       typedef int SElemType; 

                       typedef struct 

                       {SElemType *base; 

                         SElemType *top; 

                         int stacksize; 

                       }SqStack; 

程序主框架如下:

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
//顺序栈类型定义
#define STACK_INIT_SIZE 100
#define STACKINCREMENT  10
typedef int Status;
typedef int SElemType;
typedef struct { 
 SElemType *base; // 存储空间基址 
 SElemType * top;  // 栈顶指针
 int stacksize;    // 允许的最大存储空间以元素单位
} SqStack;
//初始化顺序栈
void InitStack (SqStack &S)
 {  // 构造一个空栈 S

}

//压栈
bool Push (SqStack &S, SElemType e)
 { 
     // 若栈的存储空间不满,则插入元素 e 为新的栈顶元素,并返回 TRUE;否则返回 FALSE

   }

//出栈
bool Pop (SqStack &S, SElemType &e)
{ // 若栈不空,则删除S的栈顶元素,用 e 返回其值,并返回 TRUE;否则返回 FALSE

 } 

//栈为空判断
bool StackEmpty(SqStack S)
{//若栈为空,返回TRUE,否则返回FALSE

}

//十进制数向任意进制数的数制转换
void conversion(int numeric){
 
}
void main()
{
 int numeric;
 printf("请输入转换后的进制数");
 scanf("%d",&numeric);
 printf("请输入要转换的十进制数:\n");
 conversion(numeric);
}


回复列表 (共1个回复)

沙发

#include<iostream>
using namespace std;
typedef int SElemtype;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1

typedef struct{
    SElemtype *base;
    SElemtype *top;
    SElemtype stacksize;
}SqStack;

Status InitStack(SqStack &S)
{
    S.base=new SElemtype();
    if(!S.base) exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE;
    return OK;
}

Status StackEmpty(SqStack S)
{
    if(S.base==S.top)
        return 0;
    else return 1;
}

Status Push(SqStack &S,SElemtype e)
{
    if(S.top-S.base>=S.stacksize) 
    { 
        S.base=new SElemtype;
        if(!S.base) exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top=e;
    S.top++;
    return OK;
}

Status Pop(SqStack &S,SElemtype e)
{
    if(S.base==S.top) return ERROR;
    e=*S.top;
    S.top--;
    return OK;
}

int main()
{   
    int N;
    SElemtype f;
    SqStack Sa;
    InitStack(Sa);
    cout<<"请输入一个十进制数:"<<endl;
    cin>>N;
    while(N){
        Push(Sa,N%8);
        N=N/8;
    }
    while(!StackEmpty(Sa)){
        Pop(Sa,f);
        cout<<"与该值等值的八进制数:"<<endl;
        cout<<f<<endl;
    }return 0;
}
可是有点错误,希望大家讨论,我也是菜鸟

我来回复

您尚未登录,请登录后再回复。点此登录或注册