数据结构---栈与队列实验报告

一.上机实验的问题和要求:

数制转换

二.程序设计的基本思想,原理和算法描述:

算法描述://十进制转换成其他进制

void coversion ()

{

int N,e,d;//十进制N转换成d进制数
InitStack(&S);//构造空栈
scanf(“%d”,&N);
while(N)
{
    e=N%d;
     Push(S,e);
    N=N/d;
}
whlie(!StackEmpty(S))
{
    Pop(S,e);
    printf(“%d”,e);
}

}

三、调试和运行程序过程中产生的问题及采取的措施:

调试程序时未发现错误

四、源程序及注释

程序名:sz.cpp

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define STACK_INNT_SIZE 100//存储空间初始分配量

#define STACKINCREMENT 10//存储空间分配增量

typedef struct

{

   int * base;//构造前或者销毁后,base=NULL.

   int * top;//栈顶指针

   int stacksize;

}SqStack;

//构造空栈

void InitStack(SqStack &S)

{

S.base=(int *)malloc(STACK_INNT_SIZE * sizeof(int));

if(!S.base)

{

       printf("malloc failed.\n");

       exit(0);

}

S.top=S.base;

S.stacksize=STACK_INNT_SIZE;

}

void Push(SqStack &S,int e)//进栈

{

if(S.top-S.base>=S.stacksize)

{

       S.base=(int *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(int));

        if(!S.base)

       {

       printf("malloc failed.\n");

       exit(0);

       }

        S.top=S.base + S.stacksize;

       S.stacksize +=STACKINCREMENT;

}

*S.top++=e;

}

void Pop(SqStack &S,int &e)//出栈

{

    if(S.top==S.base)

{

       printf("Stack Empty!\n");

       exit(0);

}

e=*--S.top;

}

void main()

{

int N,e,m;

SqStack S;

InitStack(S);

    printf("转换成几进制:\n");

scanf("%d",&m);

printf("输入十进制:\n");

scanf("%d",&N);

while(N)

{

       e=N%m;

       Push(S,e);

       N=N/m;

}

while(S.top != S.base)

{

       Pop(S,e);

       printf("%d",e);

}

printf("\n");

}

五、运行结果

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值