数据结构——栈——2016_11_21
2016-11-21 21:35
204 查看
栈源代码(C语言版)
/**********实现了Pop,Push,Empty,Print,conversion等功能*********/
程序运行截图
联系邮箱:xhsgg12302@outlook.com
2016_11_21
/**********实现了Pop,Push,Empty,Print,conversion等功能*********/
#include<stdio.h> #include<stdlib.h> #define stack_init_size 10 #define STACKINCREMENT 10 //定义栈结构 typedef struct{ int * base; int * top; int stacksize; }SqStack; //初始化栈 void InitStack(SqStack * s){ s->base=(int *)malloc(stack_init_size*sizeof(int)); if(!s->base) exit(0); s->top=s->base; s->stacksize=stack_init_size; } //压栈 void Push(SqStack * s,int e){ if(s->top-s->base==s->stacksize){ s->base=(int *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int)); if(!s->base) exit(0); s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top=e; s->top++; } //弹栈 int Pop(SqStack * s){ int e; if(s->top==s->base) {printf("栈已空!\n"); exit(0); } s->top--; e=*s->top; return e; } //判断是否为空 int EmptyStack(SqStack s){ if(s.top==s.base) return 1; else return 0; } //置空栈 后面没用上。。。 void ClearStack(SqStack * s){ s->top=s->base; } //打印栈 void PrintStack(SqStack s){ while(!EmptyStack(s)){ s.top--; printf("%d ",*s.top); } printf("\n\n"); } //进制转换函数 void conversion(int N,int d){ SqStack M; InitStack(&M); printf("你输入的数值%d转换成%d进制后为:",N,d); while(N){ Push(&M,N%d); N=N/d; } while(!EmptyStack(M)){ PrintStack(M); break; } printf("\n"); } //主函数 int main(){ SqStack M; int x,y,z,i,j; InitStack(&M); printf("——栈已初始化完成——\n\n\n"); printf("请输入要操作的序号:\n"); printf("1·入栈 2·出栈 3·进制转换 4·退出\n"); scanf("%d",&x); while(x!=0){ switch(x){ case 1:printf("请输入要入栈的数值:\n"); scanf("%d",&y); Push(&M,y); PrintStack(M); break; case 2:printf("出栈的数值为:"); z=Pop(&M); printf("%d\n",z); PrintStack(M); break; case 3:printf("请输入要转换的数值和进制:\n"); scanf("%d%d",&i,&j); conversion(i,j); break; case 4:exit(0); break; default:printf("输入有误,请重新输入:\n"); } printf("1·入栈 2·出栈 3·进制转换 4·退出\n"); scanf("%d",&x); } return 0; }
程序运行截图
联系邮箱:xhsgg12302@outlook.com
2016_11_21
相关文章推荐
- 数据结构——双向循环链表——2016_11_14
- 数据解析11-21
- 剑指offer--数据结构之二叉树(1、4、6、11、12、27、48、50、60)
- 数据结构基础(21) --DFS与BFS
- 总结 数据结构:二分查找法15/4/21
- 看数据结构写代码(21) 稀疏矩阵(十字链表方式)
- 数据结构6-11
- 数据结构(11)--串的模式匹配算法之BF、KMP算法
- C++数据结构课程设计报告(1号题)【物联网1132-11】
- 数据结构基础(11) --循环链表的设计与实现
- 数据结构(21)队列--线性表实现
- 21,数据结构(4)
- Linux设备驱动程序学习(21)-内存映射和DMA-数据结构
- 数据结构基础(11)------------输出字符串的所有组合( Permutation)--腾讯笔试附加题
- 数据结构基础(21) --DFS与BFS
- 11-Oracle学习_修改表结构-数据字典表
- 实战数据结构(11)_二叉树的遍历
- 【算法学习笔记】11.数据结构基础 二叉树初步练习4
- uva297 - Quadtrees 入门经典II 第六章 数据结构基础 例题6-11
- 数据结构基础(11) --循环链表的设计与实现