《2023年数据结构实验报告栈进制转换》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告栈进制转换(6页珍藏版)》请在金锄头文库上搜索。
1、数据结构实验报告栈的应用一一进制转换程序姓名 I班级 I学号 一算法环节:1. 定义栈与建立空栈t y p e def s t r u c t in t *b a s e;o i n t *t op ;i n t s t a c ks iz e; S t a c k;int Ini t S t a c k (St a c k *s )(s - b a s e=( i nt *) ma l l oc ( S T A C K INIT SIZ E * s i z eof (int ) ;。if (! s b a s e)(。ex it (0V E R F L O W ) ;)。s - t op =
2、s - b a s e ;。s - s t a c ks i z e- ST ACK_ I NIT _ SIZ E;。r e t u r n OK;)2 .入栈程序i nt Pu s h (St a c k *s , i nt *e)(i f(s - t op - s - b a s e = ST A C K _ I NIT _ SIZ E)0 (s s - b a s e = (int *) r e a 1 l oc (s - b a s e , (s - s t a c k s iz e +ST ACKINCREMENT )* s iz eo f (i n t ) ) ; o if ( !
3、s - b a s e )O 0 。o e x i t ( O V E R F L O W ) ;O 0 。s - t op =s - b a s e + ST ACK I NCREMENT ;6 )* s - t o p + = * e ;s r e t u r n OK;3 . 出栈程序int P o p ( S t a c k *s , i n t *e)(o i f (s - t o p = s - b a s e ) (r et u r n ERROR;。 )。初 二 * s - t o p ;r et u r n OK;)4 . 主函数与进制转化v o id ma in()(in
4、t N;int a ;。int e;St a c k s ;Ini t St a c k (& s );Pop (& s , & e ) ;P u s h (&s , & e );o Init St a c k (& s) ;。p r int f (请输入十进制数: “) ;s c a n f ( d , &N);。p r int f (要将N转化为几进制? ) ;s c a nf ( n % d ” , &a );。w hil e (N)6 。3 e=N%a ;Pu s h( & s , &e );N = N / a ;6 )o w h il e (s . b a s e!=s . t op
5、 )6 。 Pop (&s , & e ) ;p r i n t f (%d ,e );)f r e e (s . b a s e);s y s t em(z ,p a u s e ” );)3. 源程序t t in c 1 u d e ft inc l u de#inc l u det t define ST ACK_ IN I T _ S I Z E 1 00# d efine ST ACKINCREM E NT 10#d efine OK 1ft define E RROR 0#de fine OVERFLOW - 1#def i ne T RU E 1#defin e FALSE -
6、1t y p e d ef s t r u c t in t *b a s e;int *t op ;i n t s t a c ks i z e; St a c k;int Init St a c k(S t a c k *s )(s - b a s e =(i n t *)ma l l o c (ST ACK_ I NIT _SIZ E * s iz eof (int );o if(! s b a s e)6 ex i t (OVERFLOW);)。 s - t op = s - b a s e;s - s t a c ks i z e =ST ACK_ INIT _ SI Z E;r e
7、 t u r n OK;)int Pu s h (St a c k * s , int *e)(i f (s - t op - s - b a s e = ST ACK_ IN I T _ SIZ E)(。 s b a s e=(int *) r ea l l oc ( s - b a s e , (s - s t a c ks iz e + ST ACKI N C REMENT ) * s i z eof (in t ) ) ;o if (!s - b a s e )0 (6 。ex it (OVERFLOW);0 s - t op = s - b a s e + ST ACKINCREME
8、NT ;。)0 * s - t op + = * e;r e t u r n OK;)int Pop (St a c k *s , i n t * e )。i f (s - t op = s - b a s e )0 o 3 r et u r n E R ROR;o * e = * - s - t op ;。r e t u r n OK;v oid ma in()(o int N ;int a ;int e;St a c k s ;Ini t St a c k(&s );。Pop (&s , & e ) ;Pu s h ( & s , &e);o Ini t St a c k(&s );p r
9、 int f(请输入十进制数:);s c a nf ( %d , & N );p r in t f(要将N转化为几进制? );s ea n f ( %d , & a );w h i l e (N)6 o e=N%a ;o P u s h ( &s , & e ) ;o o N = N / a ;0 )。w h il e (s . b a s e !=s . t o p )6 P o p (&s , & e );o p r int f (M %dz ,, e);。 fr ee( s . b a s e);s y s t em ( p a u s e ” );)调试与体会. 调试结果siinzhi
10、Debugiinzhi.exe清藕人十班制效:1348要塔N转化为几进匍? 2101010001.00请按任意键继续. . .情输入十进制数:1348| 要陶转化为凡进制? 16向4请接住意键继续. . .2 .体会这次数据结构作业我选择了做进制转换,一方面我觉得这个比较有实际意义, 另一方面我觉得做迷宫比较难。这次重要是学习如何用栈,栈自动分派变量,以及函数调用时所使用的一些空间。通过编写这次程序,提高了对栈的理解,自我查找与学习交流能力, 这次编写程序,自己通过结合课本知识编写了出来。但是这次暴露出自己函数调用还是有一些问题的, 通过同学的帮忙解决了很小但很严重的一个问题。这次,我对数据结构和c语言也有了更多地理解。