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

头文件: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. Node爬虫之——使用async.mapLimit控制请求并发

    一般我们在写爬虫的时候,很多网站会因为你并发请求数太多当做是在恶意请求,封掉你的IP,为了防止这种情况的发生,我们一般会在代码里控制并发请求数,Node里面一般借助async模块来实现. 1. asy ...

  2. 迷你MVVM框架 avalonjs 学习教程4、数据填充

    MVVM是前端的究极解决方案,你们可能用过jQuery,但那个写的代码不易维护:你们可以听过说requirejs与seajs,传说中的模块开发,加载器,但它们的最终目标是打包:你们可能听过unders ...

  3. C语言文件实现学生成绩管理

    C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...

  4. JSP中系统Date的几点不符合中国时间观的地方

    正常调用系统时间的显示格式是Date date = new Date 显示出来的当前时间为Sun Nov 22 18:39:51 CST 2015 星期天的英文单词是Sun, 这个大家都是熟悉的, 这 ...

  5. Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

     转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...

  6. SSM框架整合的详细过程(含每一步的分析及代码)。实质上是SpringMVC与mybatis的整合,应为spring与SpringMVC不需要整合。

    为了更好的学习 springmvc和mybatis整合开发的方法,需要将springmvc和mybatis进行整合. 整合目标:控制层采用springmvc.持久层使用mybatis实现. 1.1 需 ...

  7. Python操作mysql之模块pymysql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文环境 python3.6.1  Mysql ...

  8. [DT] 数据结构术语中英文对照

    数据结构术语中英文对照 数据 Data 数据元素 Data element 数据项 Data item 数据结构 Data structure 逻辑结构 Logical structure 数据类型 ...

  9. [SoapUI] 通过Groovy Script获取当前运行的是哪套Environment

    log.info testRunner.testCase.testSuite.project.getActiveEnvironment().getName()

  10. 使用WCF实现消息推送

    1.协议 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...