栈实现 C语言
最近上来写了一下栈,理解数据结构的栈。
头文件: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语言的更多相关文章
- 大数据全栈式开发语言 – Python
前段时间,ThoughtWorks在深圳举办一次社区活动上,有一个演讲主题叫做“Fullstack JavaScript”,是关于用JavaScript进行前端.服务器端,甚至数据库(MongoDB) ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- 数据结构——栈(C语言实现)
#include <stdio.h> #include <stdlib.h> #include<string.h> #include<malloc.h> ...
- 栈的C语言实现
在C++中,可以直接使用std::stack C语言实现如下: stack.c /** * @file stack.c * @brief 栈,顺序存储. * * * */ #include <s ...
- 【数据结构】之栈(Java语言描述)
在前面的[这篇文章]中,我简单介绍了栈这种数据结构的操作功能,并使用C语言对其进行了代码的编写. Java的JDK中默认为我们提供了栈这种数据结构的API—— Stack . Java中的Stack类 ...
- 【数据结构】之栈(C语言描述)
栈(Stack)是编程中最常用的数据结构之一. 栈的特点是“后进先出”,就像堆积木一样,堆的时候要一块一块堆到最上面,拆的时候需要从最上面一块一块往下拆.栈的原理也一样,只不过它的操作不叫堆和拆,而是 ...
- 栈在go语言中实现,及解决388.文件的最长绝对路径的思路
今天在LeetCode刷每日一题,遇到了388. 文件的最长绝对路径的思路,这道题让我想到了系统的目录是栈结构,果然在题解中找到了栈的解法(暴力半天没出来,跑去看题解了QWQ). 所以我就捎带复习了一 ...
- 链栈的C语言实现
/* 功能:栈的链表实现 Author:lxm Date: 20160511 */ #include <stdio.h> #include <stdlib.h> #define ...
- [置顶] 栈/入栈/出栈顺序(c语言)-linux
说明: 1.栈底为高地址,栈顶为低地址. 2.入栈顺序:从右到左. 解释1:栈在内存中的结构 [注:0x00 到 0x04之间间隔4个地址] 入栈:指针先指向0x10,从高地址向低地址方向填数值,最终 ...
- 表达式求值(栈方法/C++语言描述)(二)
上篇中完成了对表达式求值的整体过程,接下来看看如何处理不同类型的token. 对运算数的处理比较简单,它直接调用函数strtod(),将字符串中的运算数转换为浮点类型并将它压入运算数栈中: void ...
随机推荐
- C# 之 日常问题积累
https://www.cnblogs.com/xinaixia/p/3956349.html
- Linux下的终端快捷键
今天才发现Linux下的终端有这么多好用的快捷键. Shift+Ctrl+T:新建标签页 Shift+Ctrl+W:关闭标签页 Ctrl+PageUp:前一标签页 Ctrl+PageDown:后一标签 ...
- TCP/IP知识总结(TCP/IP协议族读书笔记一)
一.简述TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/互联网互联协议,又名网络通信协议.是Internet最基 ...
- eclipse报Access restriction: The type 'BASE64Decoder' is not API处理方法
今天从svn更新代码之后,由于代码中使用了BASE64Encoder 更新之后报如下错误: Access restriction: The type ‘BASE64Decoder’ is not A ...
- SAP middb主键加索引
alter table DEPTBIGCPDL_DBC drop constraint DEPTBIGCPDL_DBC_PK CREATE UNIQUE INDEX TABLEAU_USER.DEPT ...
- 110. Balanced Binary Tree (Tree; DFS)
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- EL表达式获取值栈数据
---------------------siwuxie095 EL 表达式获取值栈数据 1.导入 JSTL 相关包,下载链接: (1)http://tomcat.apache.org/taglibs ...
- 创建和运行Java项目
---------siwuxie095 首先在左侧的工程管理面板 Package Explorer 中,右键->New->Java Project ...
- 用 RPM 打包软件,第 1 部分
http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/ RPM(Red Hat Package Manager ...
- embed jetty lib
servlet-api-3.1.jar jetty-util-9.2.2.v20140723.jar jetty-servlet-9.2.2.v20140723.jar jetty-server-9. ...