静下心来写算法(之栈)
来源:互联网 发布:司法淘宝网拍卖 编辑:程序博客网 时间:2024/06/02 04:03
以前做过一个C语言作业,题目是反转字符串的,当时第一个想法就是用栈实现,后来看了答案才发现有点大材小用了。。。
栈绝不只是反转字符串、进制转换、判断符号平衡这些作用,貌似还是函数调用、递归调用的基础,的确应该好好练习一下。
栈
1.先进后出表先进去的被压入栈底,最后入栈的数据在栈顶,只能从最上面一个一个取数据。
2.栈的长度要看栈顶的高度
1)设计栈的节点
typedef struct { int *data; int size;i nt top;}STACK;
2)创建栈
STACK *creat_stack(){ STACK *s=(STACK *)malloc(sizeof(STACK)); assert(NULL!=s); s->data=(int *)malloc(MAXSIZE * sizeof(int)); assert(NULL!=s->data); s->size=MAXSIZE; s->top=0; return s;}
3)释放栈
STATUS free_stack(STACK *s) { if(s==NULL) return FALSE; free(s->data); free(s); return TRUE;}
4)将数据压栈
STATUS stack_push(STACK *s,int n){ if(s->top >= s->size ){//栈满了,需要动态追加内存空间 s->data=(int *)realloc(s->data,(s->size+STACK_INCRAMENT)*sizeof(int)); assert(NULL!=s->data); s->size+=STACK_INCRAMENT; } s->data[s->top++]=n; return TRUE;}
5)将数据出栈
int stack_pop(STACK *s){ if(s->top == 0){ printf("STACK Empty!");} return s->data[--s->top];}
6)返回栈中的数据总数
int stack_count(STACK *s){ return s->top;}
- 静下心来写算法(之栈)
- 静下心来写算法(之简单排序算法)
- 静下心来写算法(之单向链表)
- 静下心来写算法(之双向链表)
- 静下心来写算法(之循环队列)
- 静下心来写算法(之二叉树)
- 数据结构算法之栈
- 算法之栈
- 算法之栈排序
- 算法导论之栈
- 算法(之查找)
- 一步一步写算法(之洗牌算法)
- 一步一步写算法(之 A*算法)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(之 算法总结)
- 一步一步写算法(之 A*算法)
- 一步一步写算法(之 算法总结)
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
- 大学初学51时总结的,适合刚入门的
- JavaScript世界的一等公民—— 函数
- 数据结构笔试、面试(一)
- SF - 内表调整百分比
- 静下心来写算法(之栈)
- 多租户ASP.net MVC 实践
- 基于DS1302的万年历设计
- 秒杀多线程第五篇 经典线程同步 关键段CS
- a letter and a number
- Ajax学习
- iOS-cocos2d-X 环境搭建
- poj 1635( 树的最小表示法判断同构 )
- tomcat7.0配置