栈模拟递归
2015-06-23 15:14
141 查看
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include "stack.h" //10 //1010 void to2(int n) { if (n == 0) { return; } else { //printf("%d", n % 2);//顺序 to2(n / 2); printf("%d", n % 2);//逆序 } } void main() { int num; scanf("%d", &num); printf("num=%d\n", num); //to2(num); struct mystack mystackX; init(&mystackX); while (num) { push(&mystackX, num % 2); num /= 2; } while (!isempty(&mystackX)) { printf("%d", gettop(&mystackX)); pop(&mystackX); } system("pause"); }
stack.h
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <memory.h> #define N 100 struct mystack { int top; int data ;//存储栈上的数据 }; void init(struct mystack *p);//初始化 void clear(struct mystack *p); // 清空 int isempty(struct mystack *p); int isfull(struct mystack *p); int gettop(struct mystack *p); void push(struct mystack *p, int key); void pop(struct mystack *p);
stack.c
#include "stack.h" void init(struct mystack *p)//初始化 { p->top = -1;//-1:代表空栈 memset(p->data, 0, sizeof(int)*N);//清空内存 } void clear(struct mystack *p)//清空 { init(p); } int isempty(struct mystack *p) { if (p->top == -1) { return 1;//1:代表空 } else { return 0;//不为空 } } int isfull(struct mystack *p) { if (p->top == N-1) { return 1;//满了 } else { return 0; } } int gettop(struct mystack *p) { return p->data[p->top];//获取即将出栈的值 } void push(struct mystack *p,int key) { if (isfull(p)==1) { return; } else { p->top++;//下标移动一个 p->data[p->top] = key;//压栈 } } void pop(struct mystack *p) { if (isempty(p)==1) { return; } else { p->top--; } }
相关文章推荐
- Android 软键盘
- 安装 JDK 1.6 在 RHEL x64
- Python多线程1:threading
- iOS7 iOS8 调用系统通讯录界面
- 全区开展国家网络安全宣传周活动
- 《Java并发编程实践》笔记1——并发编程基础
- 安装 Tomcat 7.0 在 RHEL5.4 x64
- JQuery缓冲加载图片插件lazyload.js的使用方法
- Win10如何设置任务视图按钮显示或不显示有哪些方法
- PHP里session有效时间和回收机制
- Behavioral模式之Iterator模式
- 解决Shockwave flash在chrome该浏览器崩溃
- Openlayers自定义简单popup
- Python中的uuid
- Android: 如何手工生成R.java文件?
- Java编程中“为了性能”需做的26件事
- IEquatable(T) interface in .Net
- memmove和memcpy 以及strcmp strcpy几个库函数的实现
- easyui datagrid中图片的展示
- 白噪声(White noise)