完成人:朱荣(程序员、测试员、文档员) 113200980300006
陈森来(程序员、测试员、文档员) 113200980300007
邓兵超(程序员、测试员、文档员) 113200980300023
熊余(程序员、测试员、文档员) 113200980300030
实验题目
实验二栈和队列的应用(综合性实验 3学时)
实验目的
本次实习的目的在于深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。
必做题:
1、写一个数制转换的完整程序,对于键盘输入的任意一个非负十进制数,转换成等值的二进制数,八进制数,或十六进制数。
#include<iostream>
using namespace std;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define ERROR 0
#define OK 1
#define OVERFLOW -2
typedef struct {
int * base;
int *top;
int stacksize;
}SqStack;
int StackEmpty(SqStack *S)
{
return (S->top==S->base);
}
int InitStack(SqStack *S)
{ S->base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!S->base)
cout<<OVERFLOW<<endl;
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}
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)
cout<<OVERFLOW<<endl;
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
}
*(S->top++)=e;
}
int Pop(SqStack *S,int *e)
{
if(S->top==S->base)
return ERROR;
*e=* (--S->top);
return OK;
}
int main( )
{ int N,e,n;
SqStack S;
InitStack(&S);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>N;
while(N)
{ Push(&S,N%8);
N=N/8;
}
while(!StackEmpty(&S))
{ Pop(&S, &e);
cout<<e;
}
cout<<endl;
}
return 0;
}
以
实验报告二(栈和队列) 来自淘豆网m.daumloan.com转载请标明出处.