当前位置:   article > 正文

数据结构---栈与队列实验报告_栈和队列上机实验报告

栈和队列上机实验报告

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

数制转换

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

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

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");

}

五、运行结果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/668346
推荐阅读
相关标签
  

闽ICP备14008679号