参考 http://www.cnblogs.com/java06/archive/2012/10/16/3122428.html

1,顺序栈

定义栈:

 #define stacksize 1000;
typedef int datatype; struct seqstack
{
datatype data[stacksize];
int top;
};

置栈空:

 void initstack(struct seqstack *s)
{
s -> top = -;
}

判断栈空:

 int stackempty(struct seqstack *s)
{
int flag; flag = (s -> top == -)? : ; //此处未用if return flag;
}

入栈:

 void push(struct seqstack *s,x)
{
s -> top ++;
if stackfull; //伪
exit("stack overflow\n"); //数组溢出 s -> data[s -> top] = x;
}

2,链栈

定义栈:

 typedef struct stacknode
{
datatype data;
struct stacknode *next;
}stacknode; typedef struct
{
stacknode *top;
}linkstack;

置空:

 void initstack(linkstack *s)
{
s -> top = NULL;
}

判栈空:

 void initstack(linkstack *s)
{
s -> top = NULL;
}

入栈:

 void push(linkstack *s, datatype x)
{
struct stacknode *p;
p = malloc(sizeof(struct stacknode));
p -> data = x;
p -> next = s -> top;
s -> top = p;
}

出栈:

 datatype pop(linkstack *s)
{
datatype x;
struct stacknode *p = s -> top;
if(stackempty(s))
exit("stack is empty!\n");
x = p -> data;
s -> top = p -> next;
free(p);
return x;
}

取栈顶:

 datatype stacktop(linkstack *s)
{
if(stackempty(s))
exit("stack is empty!\n");
return s -> top -> data;
}

stack note的更多相关文章

  1. SQLite3源程序分析之虚拟机

    前言 最早的虚拟机可追溯到IBM的VM/370,到上个世纪90年代,在计算机程序设计语言领域又出现一件革命性的事情——Java语言的出现,它与c++最大的不同在于它必须在Java虚拟机上运行.Java ...

  2. struts2默认配置文件 struts-default.xml

    注:用的struts2的版本是2.1.6 strtus2的默认配置文件 struts-default.xml ,其中的默认的拦截器,包括其中的拦截器栈. 因为struts2的配置文件struts.xm ...

  3. 如何捕捉并分析SIGSEGV的现场

    linux下程序对SIGSEGV信号的默认处理方式是产生coredump并终止程序,可以参考man 7 signal Signal Value Action Comment ───────────── ...

  4. Oracle EBS R12 (12.1.3) Installation Linux(64 bit)

    Oracle EBS R12 (12.1.3) Installation Linux(64 bit) Contents Objective. 3 1 Download & Unzip. 3 D ...

  5. About Flash

    Take SAMSUNG K9F1G08U0E for example, and use S3C2416, Windows CE5.0 platform. 要让Flash工作起来,包括两部分: Fla ...

  6. uC/OS-II核心(Os_core)块

    /*************************************************************************************************** ...

  7. struts2--convention-plugin--零配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  8. Struts2(五):ActionSupport

    我们在上一章节中的一个列子中使用到了一个标识跳转到登录页面的例子: 示例是这样写的: index.jsp: <br/> <a href="gotoLoginPage&quo ...

  9. struts2:拦截器

    拦截器(Interceptor)是Struts 2的核心组件,Struts 2框架的大部分功能都是通过拦截器来完成的,例如数据校验,国际化,文件上传和下载等.为了实现这些功能,Struts 2框架提供 ...

随机推荐

  1. ThinkPHP 3.2.2 实现持久登录 ( 记住我 )

    实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录 ...

  2. Irrlicht引擎I 配置

    游戏是一个比较大的系统,包含了图形引擎.网络.AI.声音.UI等模块,模块的开发可能会分别进行或者采用开源项目,Irrlicht引擎基本包含了这些模块,不过在使用中也会陆续加入其它的模块.以前开发的程 ...

  3. 5 个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  4. mysql操作类库--摘抄

    <!--?php /** +---------------------------------- * MySQL操作类库 +---------------------------------- ...

  5. ArcGIS Server发布服务,报错00032

    错误00032 独立表数据源无法访问 00032: 修复已断开的数据连接,具体做法是将每个独立表的数据源都设置为正确的位置. 或者,如果不需要该表,将其从文档中移除. 建议在ArcMap中重新加载数据 ...

  6. java 开发, jdk 1.6 官方下载地址

    在oracle官方网站默认下载的jdk是最新的,目前正式版是1.8. 但有些项目要求是1.6的jdk,费了九牛二虎之力终于找到了1.6的官方版本,链接如下: http://www.oracle.com ...

  7. 在windows下创建一个Mongo服务

    首先需要下载mongo的安装包 cmd.exe 这个需要用管理员权限打开 进入到mongo的安装目录 首先到C盘根据下面的命令手动创建一个 Data 文件夹 在Data 里面创建一个db文件夹一个lo ...

  8. 借用layer让弹层不限制在iframe内部

    使用方法: 1 除了layer的success,end,cancel回掉函数以外其它的layer参数都可以使用. 2 使用前在layer的js后边把该js引入(可以命名为layerExtend). 3 ...

  9. Spring中Quartz的最精简的配置

    <bean id="parserJob4Pos" class="org.springframework.scheduling.quartz.JobDetailBea ...

  10. 20145211 《Java程序设计》第10周学习总结——昨夜星辰昨夜风

    教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴. 在发送和接收 ...