构建链式栈
来源:互联网 发布:淘宝里i7主机2千多 编辑:程序博客网 时间:2024/05/29 07:40
#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1#define STACK_INT_SIZE 10 /*存储空间初始分配量*/#define STACKINCREMENT 5 /*存储空间分配增量*/typedef int ElemType; /*定义元素的类型*/typedef struct{ ElemType *base; ElemType *top; int stacksize; /*当前已分配的存储空间*/}SqStack;int InitStack(SqStack *S); /*构造空栈*/int Push(SqStack *S,ElemType e); /*入栈*/int Pop(SqStack *S,ElemType *e); /*出栈*/int CreateStack(SqStack *S); /*创建栈*/void PrintStack(SqStack *S); /*出栈并输出栈中元素*/void Transformation(ElemType num,SqStack *S);//把一个10进制数转化为2进制void Maketentotwo(){ElemType num;SqStack st;printf("Enter a number we can make it from 10 to 2:\n");getchar();scanf("%d",&num);InitStack(&st);Transformation(num,&st);PrintStack(&st);}void Transformation(ElemType num,SqStack *S){ElemType k;while(num){k=num%2;Push(S,k);num/=2;}}int InitStack(SqStack *S){ S->base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(ElemType)); if(!S->base) return ERROR; S->top=S->base; S->stacksize=STACK_INT_SIZE; return OK;}/*InitStack*/int Push(SqStack *S,ElemType e){if(S->top-S->base==S->stacksize){int i=S->stacksize-1;ElemType *pt;pt=(ElemType *)malloc(2*S->stacksize*sizeof(ElemType));while(i>=0){*(pt+i)=*(S->base+i);i--;}free(S->base);S->base=pt;S->top=pt+S->stacksize;S->stacksize*=2;}*(S->top)=e;S->top++;return OK;}/*Push*/int Pop(SqStack *S,ElemType *e){if(S->top>S->base){S->top--;*e=*(S->top);return OK;}else{free(S->base);return ERROR;}}/*Pop*/int CreateStack(SqStack *S){ int e; if(InitStack(S)) printf("Init Success!\n"); else{ printf("Init Fail!\n"); return ERROR; } printf("input data:(Terminated by inputing a character)\n"); while(scanf("%d",&e)) Push(S,e); return OK;}/*CreateStack*/void PrintStack(SqStack *S){ ElemType e; while(Pop(S,&e)) printf("%3d",e);printf("\n");}/*Pop_and_Print*/int main(){ SqStack ss; printf("\n1-createStack\n"); CreateStack(&ss); printf("\n2-Pop&Print\n"); PrintStack(&ss);Maketentotwo(); return 0;}
0 0
- 构建链式栈
- 数据结构之链式栈的构建
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 栈链式
- 链式栈
- 链式栈
- 链式栈
- 链式栈
- 栈-链式
- 链式栈
- 链式栈
- 链式栈
- C语言中的强符号和弱符号
- 常见的排序算法
- 软件比赛
- “System.InvalidOperationException”类型异常
- glew在64位系统下的安装方法
- 构建链式栈
- [项目管理]_[初级]_[TortoiseSVN的使用入门]
- Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- 信用卡号验证
- 蓝牙打印机使用范例
- 第十二周项目三 用递归方法求解(返回第n个Fibnacci数)
- C语言中变量的作用域与存储类型
- 用二叉树实现表达式中缀式变后缀式并求值
- 身份证号码验证