最近上来写了一下栈,理解数据结构的栈。

头文件:stack.h

初始化栈结构与函数定义:

#include<stdlib.h>
#include <stdio.h>
#include<memory.h>
#define N 100 struct stack
{
int data[N];
int top;//标识栈顶
}; typedef struct stack Stack;//Stack别名 void init(Stack * p);//初始化
int isempty(Stack * p);//判定栈是否空
int isfull(Stack * p);//判定栈溢出
int gettop(Stack * p);//获取栈顶
void push(Stack * p, int key);//插入数据
void pop(Stack * p);//吐出
void show(Stack * p);//显示栈

stack.c

实现函数:初始化,判断栈顶,溢出等

#include "stack.h"

void init(Stack * p)//初始化
{
p->top = -;//代表为空
memset(p->data, , sizeof(int)*N);//数据清零 }
int isempty(Stack * p)//判定栈是否空
{
if (p->top==-)
{
return ;//1为空
}
else
{
return ;//0不为空
}
}
int isfull(Stack * p)//判定栈溢出
{
if (p->top==N-)
{
return ;///溢出
}
else
{
return ;//还能再喝点
}
}
int gettop(Stack * p)//获取栈顶
{
return p->data[p->top];//获取栈顶
}
void push(Stack * p, int key)//插入数据
{
if (isfull(p)==)
{
return;
}
else
{
p->top += ;
p->data[p->top] = key;//压入数据
}
}
void pop(Stack * p)//吐出
{
if (isempty(p)==)
{
return;
}
else
{
p->top -= ;//出栈
}
} void show(Stack * p)
{
int i;
if (isempty(p) == )
{
return;
}
else
{
printf("\n栈的数据是\n");
for (i = ; i <= p->top;i++)
{
printf("%4d", p->data[i]);//打印栈的数据
} printf("\n");
}
}

主函数main.c

#include<stdio.h>
#include"stack.h"
void main()
{
int i = ;
int a[] = { , , , , , , , , , }; Stack mystack;
init(&mystack);//初始化
for (i = ; i < ;i++)
{
push(&mystack, i);
}
//全部装完再吐
while (!isempty(&mystack))
{
printf("%d", gettop(&mystack)); //获取栈顶
pop(&mystack); //吐出
} printf("\n"); //装一个吐一个。。。。。
init(&mystack);//初始化
for (i = ; i < ; i++)
{
push(&mystack, i);
printf("%d", gettop(&mystack));
pop(&mystack);
}
getchar();
}

栈实现 C语言的更多相关文章

  1. 大数据全栈式开发语言 – Python

    前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...

  2. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  3. 数据结构——栈(C语言实现)

    #include <stdio.h> #include <stdlib.h> #include<string.h> #include<malloc.h> ...

  4. 栈的C语言实现

    在C++中,可以直接使用std::stack C语言实现如下: stack.c /** * @file stack.c * @brief 栈,顺序存储. * * * */ #include <s ...

  5. 【数据结构】之栈(Java语言描述)

    在前面的[这篇文章]中,我简单介绍了栈这种数据结构的操作功能,并使用C语言对其进行了代码的编写. Java的JDK中默认为我们提供了栈这种数据结构的API—— Stack . Java中的Stack类 ...

  6. 【数据结构】之栈(C语言描述)

    栈(Stack)是编程中最常用的数据结构之一. 栈的特点是“后进先出”,就像堆积木一样,堆的时候要一块一块堆到最上面,拆的时候需要从最上面一块一块往下拆.栈的原理也一样,只不过它的操作不叫堆和拆,而是 ...

  7. 栈在go语言中实现,及解决388.文件的最长绝对路径的思路

    今天在LeetCode刷每日一题,遇到了388. 文件的最长绝对路径的思路,这道题让我想到了系统的目录是栈结构,果然在题解中找到了栈的解法(暴力半天没出来,跑去看题解了QWQ). 所以我就捎带复习了一 ...

  8. 链栈的C语言实现

    /* 功能:栈的链表实现 Author:lxm Date: 20160511 */ #include <stdio.h> #include <stdlib.h> #define ...

  9. [置顶] 栈/入栈/出栈顺序(c语言)-linux

    说明: 1.栈底为高地址,栈顶为低地址. 2.入栈顺序:从右到左. 解释1:栈在内存中的结构 [注:0x00 到 0x04之间间隔4个地址] 入栈:指针先指向0x10,从高地址向低地址方向填数值,最终 ...

  10. 表达式求值(栈方法/C++语言描述)(二)

    上篇中完成了对表达式求值的整体过程,接下来看看如何处理不同类型的token. 对运算数的处理比较简单,它直接调用函数strtod(),将字符串中的运算数转换为浮点类型并将它压入运算数栈中: void ...

随机推荐

  1. HTML5 APP

    jquery,bootstrap http://www.bcty365.com/content-74-2640-1.html JS运行效率,浏览器 html+js+css3    css3是在css的 ...

  2. Nginx Linux yum安装

    -- 安装>yum install nginx -y -- 查看>whereis nginx >目录>/usr/sbin/nginx 执行命令>/etc/nginx 配置 ...

  3. delphi 工具

    http://blog.csdn.net/maxwoods/article/category/1285993

  4. 7.25 1figting!

    TEXT 97 Health consumerism 保护消费者健康权益 The wellness boom 健康产业飞速发展(陈继龙编译) Jan 4th 2007 | NEW YORK From ...

  5. 【333】Python3.6 格式化文本

    看如下例子进行体会: min_temperature = 0 max_temperature = 300 step = 20 # \t: A tab print('Fahrenheit\tCelsiu ...

  6. 2013年最后的收成:avalon1.0正式发布

    大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人,avalon发展得很快,GITHUB上的贡献人数达 ...

  7. node.js中的匿名函数, 回调函数和嵌套函数

    定义一个函数相信大家已经很熟悉了, 在javascript里的函数也是非常重要的, 使用率非常高, 有几种函数不是很好理解 一, 匿名函数 var remove = function(num1) { ...

  8. Spring boot 、mybatis 和 swagger 整合

    文件路径 添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  9. 【git使用】Failed to connect to 127.0.0.1 port 1080: Connection refused

    查询是否使用代理:git config --global http.proxy 取消代理:git config --global --unset http.proxy

  10. Java程序设计17——多线程-Part-C

    11 使用管道流 前面介绍的两种方式与其称为线程之间的通信,还不如称为线程之间协调运行的控制策略.如果需要在两条线程之间进行更多的信息交互,则可以考虑使用管道流进行通信. 管道流有3中存在形式:Pip ...