项目4 -- 数制转换
2015-10-09 08:30
411 查看
/*
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,sqstack.cpp,sqstack.h
* 作者:张志康
* 完成日期:2015年10月8日
* 版本号:vc++6.0
*
* 问题描述:把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。
* 程序输出:结果
*/
代码:
1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明;
2.源文件:sqstack.cpp,包含实现各种算法的函数的定义
3.main.cpp完成测试:
运行结果:
![](https://img-blog.csdn.net/20151009085210032?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
学习总结:
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,sqstack.cpp,sqstack.h
* 作者:张志康
* 完成日期:2015年10月8日
* 版本号:vc++6.0
*
* 问题描述:把十进制的整数转换为任一进制数输出。请利用栈设计算法,并实现程序。
* 程序输出:结果
*/
代码:
1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明;
#ifndef SQSTACK_H_INCLUDED #define SQSTACK_H_INCLUDED #define MaxSize 100 typedef int ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈指针 } SqStack; //顺序栈类型定义 void InitStack(SqStack *&s); //初始化栈 void DestroyStack(SqStack *&s); //销毁栈 bool StackEmpty(SqStack *s); //栈是否为空 int StackLength(SqStack *s); //返回栈中元素个数——栈长度 bool Push(SqStack *&s,ElemType e); //入栈 bool Pop(SqStack *&s,ElemType &e); //出栈 bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素 void DispStack(SqStack *s); //输出栈 #endif // SQSTACK_H_INCLUDED
2.源文件:sqstack.cpp,包含实现各种算法的函数的定义
#include <stdio.h> #include <malloc.h> #include "sqstack.h" void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } void DestroyStack(SqStack *&s) { free(s); } int StackLength(SqStack *s) //返回栈中元素个数——栈长度 { return(s->top+1); } bool StackEmpty(SqStack *s) { return(s->top==-1); } bool Push(SqStack *&s,ElemType e) { if (s->top==MaxSize-1) //栈满的情况,即栈上溢出 return false; s->top++; s->data[s->top]=e; return true; } bool Pop(SqStack *&s,ElemType &e) { if (s->top==-1) //栈为空的情况,即栈下溢出 return false; e=s->data[s->top]; s->top--; return true; } bool GetTop(SqStack *s,ElemType &e) { if (s->top==-1) //栈为空的情况,即栈下溢出 return false; e=s->data[s->top]; return true; } void DispStack(SqStack *s) //输出栈 { int i; for (i=s->top;i>=0;i--) printf("%c ",s->data[i]); printf("\n"); }
3.main.cpp完成测试:
</pre></div><div class="notice tracking-ad" data-mod="popu_3"></div><div class="notice tracking-ad" data-mod="popu_3"><pre class="csharp" name="code">#include <stdio.h> #include "sqstack.h" void MultiBaseOutput (int number,int base) { //假设number是非负的十进制整数,输出等值的base进制数 int i; SqStack *S; InitStack(S); while(number) //从右向左产生base进制的各位数字,并将其进栈 { Push(S,number%base); //将将余数进栈 number/=base; } while(!StackEmpty(S)) //栈非空时退栈输出 { Pop(S, i); printf("%d",i); } } int main() { MultiBaseOutput(10, 2); return 0; }
运行结果:
学习总结:
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C++基于栈实现铁轨问题
- 数据结构之Treap详解
- C语言栈的表示与实现实例详解
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言实现颠倒栈的方法
- C++实现简单的学生管理系统
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- JavaScript数据结构和算法之图和图算法
- Array栈方法和队列方法的特点说明
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- Java数据结构及算法实例:冒泡排序 Bubble Sort