栈的使用和简单进制转换的应用
来源:互联网 发布:深蓝射频效果知乎 编辑:程序博客网 时间:2024/05/16 09:30
栈头文件
/* * ADTStack.h * * Created on: 2013-5-26 * Author: inner */#ifndef ADTSTACK_H_#define ADTSTACK_H_#define STACK_INT_SIZE 100#define STACKINCREMENT 10typedef int sElemType;typedef struct{sElemType *top;sElemType *base;int stacksize;}SqStack;//初始化 void InitStack(SqStack *stack); //销毁栈 void DestroyStack(SqStack *stack); //入栈 void Push(SqStack *stack,sElemType elem); //出栈 int pop(SqStack *stack); //栈顶元素 int getTop(SqStack *stack); //判断栈是否为空 int IsEmpty(SqStack *stack);#endif /* ADTSTACK_H_ */
栈源文件
/* * StackMake.c * * Created on: 2013-5-26 * Author: inner */#include <stdio.h>#include <stdlib.h>#include "ADTStack.h" void InitStack(SqStack *stack){//分配内存空间stack->top = (sElemType*)malloc(STACK_INT_SIZE*sizeof(sElemType));if(!stack->top)exit(1);stack->base = stack->top;stack->stacksize = STACK_INT_SIZE;printf("初始化成功\n"); } void Push(SqStack *stack,sElemType elem){ if(stack->top-stack->base>=stack->stacksize){ stack->base =(sElemType*)realloc(stack->base,(STACKINCREMENT+STACK_INT_SIZE)*sizeof(sElemType)); } *stack->top = elem; ++stack->top; printf("入栈为%d\n",elem); printf("栈大小%d\n",stack->top-stack->base); } int pop(SqStack *stack){ //检查栈是否为空 if(stack->top-stack->base == 0){ printf("栈为空"); exit(0); } int kk; kk = *--stack->top; printf("出站为%d\n",kk); printf("栈大小%d\n",stack->top-stack->base); return kk; } int getTop(SqStack *stack){ if(IsEmpty(stack)) exit(0); int kk = *(--stack->top); printf("栈顶元素为:%d",kk); return kk; } int IsEmpty(SqStack *stack){ if(stack->top-stack->base == 0){ printf("栈已经为空"); return 1; } return 0; }
栈的进制转换执行文件
#include <stdio.h>#include <stdlib.h>#include "ADTStack.h"void conversion(int,int);int main(void) {int a, b;printf("输入十进制数\n");scanf("%d",&a);printf("输入要转换进制\n");scanf("%d",&b);conversion(a,b);return EXIT_SUCCESS;}void conversion(int a,int b){SqStack S;InitStack(&S);while(a){Push(&S,a%b);a=a/b;}while(!IsEmpty(&S)){printf("%d",pop(&S));}}
栈的进制实例效果
输入十进制数
88888
输入要转换进制
7
初始化成功
入栈为2
栈大小1
入栈为0
栈大小2
入栈为1
栈大小3
入栈为0
栈大小4
入栈为2
栈大小5
入栈为5
栈大小6
520102栈已经为空
栈的接口测试
int main(void) { SqStack stack; InitStack(&stack); Push(&stack,688); Push(&stack,66555); pop(&stack); getTop(&stack); return EXIT_SUCCESS;}
栈的接口的实例效果
初始化成功
入栈为688
栈大小1
入栈为66555
栈大小2
出站为66555
栈大小1
栈顶元素为:688
简单的栈就到这里了。。。。
- 栈的使用和简单进制转换的应用
- 字符串拷贝与进制转换的简单应用
- 数据结构-C语言 栈的简单应用——10进制以内的数制转换
- 数据结构--链式栈、顺序栈的基本实现与简单应用:进制转换
- 数据结构笔记——进制转换(栈的简单应用)(SDOJ 2131)
- 数据结构 栈的应用 进制转换
- 栈的应用-进制转换
- 栈的应用之进制转换
- 栈的应用---进制转换
- 栈的应用之进制转换
- 栈的应用之一----------进制转换
- 栈的应用之进制转换
- 栈的应用(进制转换)
- 栈的应用3--进制转换
- 栈的应用--进制转换
- protobuf的简单应用,json和protocol Buffer的转换简单例子
- iOS NSDateFormatter 和 NSDate简单使用 时间戳的转换
- AD转换和DA转换的应用
- Ubuntu/linux下下载工具
- for的几种用法
- 智能课程表Android版-日期和时间的动态显示(一)
- 智能课程表Android版-日期和时间的动态显示(二)
- maven学习之八插件的使用
- 栈的使用和简单进制转换的应用
- OpenStack 之Nova添加扩展API流程,附带资源的查找功能
- 读文件大全
- windows 程序设计 第三章 (下)
- zoj_1095 Humble Numbers
- 追加文件内容
- 交通灯管理系统
- OpenStack 扩展API
- Vim as Python IDE on windows