数据结构——栈的动态实现(brk/sbrk)(Unix C语言实现)
来源:互联网 发布:王者荣耀网络检测出错 编辑:程序博客网 时间:2024/06/07 21:48
/*************************************************************************
> File Name: stack_brk.c
> Author: Andy001847
> Mail: yunzhonglai@hotmail.com
> Created Time: 2014年10月22日 星期三 22时52分48秒
************************************************************************/
//栈的brk/sbrk实现,并且利用栈实现任意进制转换
#include <stdio.h>
#include <unistd.h>
void *begin = NULL;
//初始化栈
void init(){
begin = sbrk(0);
}
//清理栈
void deinit(){
brk(begin);
}
//判栈空
int empty(){
return begin == sbrk(0);
}
//入栈
void push(int data){
*(int *)sbrk(sizeof(int)) = data;
}
//出栈
void pop(){
sbrk(-sizeof(int));
}
//获取栈顶元素
int top(){
return *((int *)sbrk(0) - 1);
}
//获取栈中有效数据个数
int size(){
return (sbrk(0) - begin) / sizeof(int);
}
//进制转换函数
void converts(unsigned int number, int base){
init(); //初始化栈
do{
push(number % base); //入栈
}while(number /= base);
while(!empty()){
if(top() < 10){
printf("%d",top());
}
else{
printf("%c",top() - 10 + 'A');
}
pop(); //出栈
}
printf("\n");
deinit(); //清理栈
}
int main(){
int num = 0;
printf("请输入一个整数:");
while(!scanf("%d",&num)){
scanf("%*[^\n]");
scanf("%*c");
printf("输入有误!请重新输入:");
}
scanf("%*[^\n]");
scanf("%*c");
int base = 0;
printf("请输入要转的进制:");
while(!scanf("%d",&base)){
scanf("%*[^\n]");
scanf("%*c");
printf("输入有误!请重新输入:");
}
scanf("%*[^\n]");
scanf("%*c");
printf("%d转换成%d进制为",num,base);
converts(num, base);
return 0;
> File Name: stack_brk.c
> Author: Andy001847
> Mail: yunzhonglai@hotmail.com
> Created Time: 2014年10月22日 星期三 22时52分48秒
************************************************************************/
//栈的brk/sbrk实现,并且利用栈实现任意进制转换
#include <stdio.h>
#include <unistd.h>
void *begin = NULL;
//初始化栈
void init(){
begin = sbrk(0);
}
//清理栈
void deinit(){
brk(begin);
}
//判栈空
int empty(){
return begin == sbrk(0);
}
//入栈
void push(int data){
*(int *)sbrk(sizeof(int)) = data;
}
//出栈
void pop(){
sbrk(-sizeof(int));
}
//获取栈顶元素
int top(){
return *((int *)sbrk(0) - 1);
}
//获取栈中有效数据个数
int size(){
return (sbrk(0) - begin) / sizeof(int);
}
//进制转换函数
void converts(unsigned int number, int base){
init(); //初始化栈
do{
push(number % base); //入栈
}while(number /= base);
while(!empty()){
if(top() < 10){
printf("%d",top());
}
else{
printf("%c",top() - 10 + 'A');
}
pop(); //出栈
}
printf("\n");
deinit(); //清理栈
}
int main(){
int num = 0;
printf("请输入一个整数:");
while(!scanf("%d",&num)){
scanf("%*[^\n]");
scanf("%*c");
printf("输入有误!请重新输入:");
}
scanf("%*[^\n]");
scanf("%*c");
int base = 0;
printf("请输入要转的进制:");
while(!scanf("%d",&base)){
scanf("%*[^\n]");
scanf("%*c");
printf("输入有误!请重新输入:");
}
scanf("%*[^\n]");
scanf("%*c");
printf("%d转换成%d进制为",num,base);
converts(num, base);
return 0;
}
运行结果演示:
0 0
- 数据结构——栈的动态实现(brk/sbrk)(Unix C语言实现)
- 用brk实现sbrk,关于brk的返回值
- C语言内存分配模型->brk() sbrk()
- 数据结构——栈的动态实现(malloc/free)(C语言实现)
- sbrk/brk的用法
- sbrk和brk的区别
- sbrk/brk函数的使用
- 数据结构——链栈的实现(C语言)
- 数据结构C 语言描述——实现栈的基本功能
- brk/sbrk
- brk sbrk
- C语言实现堆栈(栈)的数据结构
- <数据结构>顺序栈的C语言实现
- <数据结构>链栈的C语言实现
- [数据结构]C语言栈的实现
- 数据结构栈的C语言实现
- 数据结构之栈的c语言实现
- [数据结构]栈的C语言简单实现
- 制度的重要性
- sql 多表连接查询(详细实例)
- VC++6.0注释快捷键设置
- 关于JS制作时钟的那些事儿
- HashMap里的hash、indexFor方法
- 数据结构——栈的动态实现(brk/sbrk)(Unix C语言实现)
- CentOS下MySQL修改密码、开启远程连接。
- UVA - 301 Transportation
- Oracle实例安装出现ORA-28000和ORA-00922错误
- TP-LINK WR720N 无线路由器 局域网内 设置上网 步骤
- HDOJ 5071 Chat 模拟
- oracle 细粒度审计使用
- C#实现的分数类
- poi操作word文档文件操作