堆栈C实现
标准C语言没有像C++那样可以直接调用的STL容器,所以在c语言中实现容器功能就得自己去定义堆栈结构:
stack.h
/************this head file defines a stack****************** ********************created on:2010-4-21******************** ********************modify on: 2010-4-21******************** ********************developed by御风**********************/ /*modify log:NULL*/ #ifndef __STACK_H__ #define __STACK_H__ #define ST_STACK_SIZE 1024 //定义栈空间大小 #define ST_FAILED (char)0xa5 //出错返回值 /*栈结构定义*/ typedef struct { char stack[ST_STACK_SIZE]; //存储空间 int top; //当前栈顶 } Stack_T; void initStack(Stack_T* stack); //初始化栈!!!必须在使用栈前调用,否则将出现不明错误 char popData(Stack_T* stack); //弹出栈顶数据 char readData(Stack_T* stack); //读出数据(不对原数据删除,只读) char pushData(Stack_T* stack, char data); //单个数据压栈 char pushNData(Stack_T* stack, char* buffer, int N); //多个数据压栈 #endif
stack.h
#include "stack.h" void initStack(Stack_T* stack) { stack->top = ; } char popData(Stack_T* stack) { if (stack->top) { stack->top--; return stack->stack[stack->top]; } ]; } char readData(Stack_T* stack) { if (stack->top) { ]; } return ST_FAILED ; } char pushData(Stack_T* stack, char data) { if (stack->top < ST_STACK_SIZE) { stack->stack[stack->top] = data; stack->top++; ; } return ST_FAILED ; } char pushNData(Stack_T* stack, char* buffer, int N) { if (ST_STACK_SIZE - stack->top >= N) { while (N--) { stack->stack[stack->top] = *(buffer++); stack->top++; } ; } return ST_FAILED ; }
main.c
#include "stack.h" #include <stdio.h> void main() { char str[] = "\nthis is a stack test prog!"; Stack_T stack; initStack(&stack); ) == ST_FAILED) { printf("插入数据错误!"); } while (stack.top) { printf("%c", popData(&stack)); } }
堆栈C实现的更多相关文章
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- History API与浏览器历史堆栈管理
移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构.传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持o ...
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 堆栈是栈 JVM栈和本地方法栈划分 Java中的堆,栈和c/c++中的堆,栈 数据结构层面的堆,栈 os层面 ...
- arcgis engine 中出现的内存堆栈溢出问题。
两种解决方案: 1.循环加载mxd文档的时候出现的堆栈溢出,解决办法是每次循环结束时清空FeatureLayer,感觉并不好,但是确实可以实现功能. 2.循环调取featureclass的search ...
- java 堆栈 理解
Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...
- python列表模拟堆栈和队列
对列特点:先进先出.后进后出 用列表insert.pop模拟进队出队: >>> l = [] >>> l.insert(0,'p1') >>> l ...
- GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...
- 20145212——GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 测试代码 #include <stdio.h> short val = 1; int vv = 2; int g(int xxx) { return xxx + ...
- C和指针 第十七章 经典数据类型 堆栈 队列 二叉树
堆栈: // // Created by mao on 16-9-16. // #ifndef UNTITLED_STACK_H #define UNTITLED_STACK_H #define TR ...
- gdb调试汇编堆栈过程的学习
gdb调试汇编堆栈过程的学习 以下为C源文件 使用gcc - g code.c -o code -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器: 进入之 ...
随机推荐
- python list 的+、+=和extend操作
据说后者在list很大的时候性能稍好. 于是测试了一把: import time def time_cost(func): def _time_cost(*args,**kw): t1=time.ti ...
- 教程和工具--用wxPython编写GUI程序的
wxPython是个很好的GUI库,对底层的C++库进行了封装,调用起来很方便,尤其是操作前台UI界面和后台多线程,两者配合很方便,做GUI程序最难是写界面尤其是布局. 关于wxPython,自己正在 ...
- [转载]python gevent
原地址: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001407503089 ...
- 【leetcode】Gas Station
Gas Station There are N gas stations along a circular route, where the amount of gas at station i is ...
- 【leetcode】Integer to Roman
Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...
- struts2 复杂参数封装
1.1.1 Struts2中封装复杂类型的数据: 封装到List集合: 页面: 商品名称:<input type="text" name="products[ ...
- spring mvc 重定向加传参
常用: ModelAndViewi: return new ModelAndView("redirect:/toList"); 或者 ii:return "redire ...
- sqlite ORMLite 框架应用
bean package com.test.deamo.bean; import android.os.Parcel; import android.os.Parcelable; import com ...
- Selenium FF WebDriver 遍历所有链接(另类爬虫)
请看这个页面,我想要找到某个公告的内容,必须一个一个打开链接,尼玛好多啊. 于是,我机智的使用selenium打开每一个链接,然后把公告内容写入txt 那需要做一下步奏 1.依次打开一个公告 2.切换 ...
- Java for LeetCode 214 Shortest Palindrome
Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...