静态栈-------C语言
/*****************************************************
Author:Simon_Kly Version:0.1 Date: 20170520
Description:静态栈
Mail: degaullekong@gmail.com
Funcion List:
*****************************************************/ #include <stdio.h>
#include <stdlib.h> #define SIZE 10 enum result {FULL_OK = , FULL_NO, EMPTY_OK, EMPTY_NO, PUSH_OK, PUSH_NO, POP_OK, POP_NO}; typedef struct stack_node
{
int data[SIZE];
int top;
}Stack; /*创建栈*/
void create_stack(Stack ** stack)
{
*stack = (Stack *)malloc(sizeof(Stack));
if (NULL == *stack)
{
printf("malloc error!\n");
exit(-);
} (*stack)->top = -;
} /*初始化栈*/
void init_stack(Stack *stack)
{
stack->top = -;
} /*判断栈是否满*/
int is_stack_full(Stack *stack)
{
if (stack->top == SIZE - )//栈已满
{
return FULL_OK;
} return FULL_NO;//栈不满
}
/*压栈*/
void push_stack(Stack *stack, int data)
{
if (FULL_OK == is_stack_full(stack))
{
printf("stack is full!\n");
return ;
}
else
{
stack->top++;
stack->data[stack->top] = data;
}
} /*判断栈是否空*/
int is_stack_empty(Stack *stack)
{
if (- == stack->top)
{
return EMPTY_OK;//栈空
} return EMPTY_NO;//不为空
} /*出栈*/
int pop_stack(Stack *stack)
{
if (EMPTY_OK == is_stack_empty(stack))
{
printf("stack is empty!\n");
return POP_NO;
}
else
{
return stack->data[stack->top--];
}
} /*读栈顶*/
void read_stack_top(Stack *stack)
{
if (EMPTY_OK == is_stack_empty(stack))//判断栈是否空
{
printf("stack is empty!\n");
return ;
} printf("stack top is %d\n", stack->data[stack->top]); } int main()
{
Stack *stack;
int i;
int ret; create_stack(&stack);
init_stack(stack);//栈的初始化 //进栈
for (i = ; i < SIZE; i++)
{
push_stack(stack, i + );
}
//出栈
for (i = ; i < SIZE; i++)
{
read_stack_top(stack);
ret = pop_stack(stack); if (ret == POP_NO)
{
break;
}
printf("%d\n", ret);
}
putchar(); read_stack_top(stack); free(stack);
return ;
}
静态栈-------C语言的更多相关文章
- 数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...
- 使用highlight.js高亮静态页面的语言代码
显示静态的代码其实html的pre标签基本可以满足需求了,至少不会将换行的文本显示成一堆字符串. 不过能使静态的文本能高亮显示,倒更炫酷一点.其实很简单的,引入highlight.js包,可以使用cd ...
- 静态链表 C语言描述
静态链表1.下标为0的游标存放最后存放数据节点的游标,即是第一个没有存放元素(备用链表)的下标2.最后一个的节点存放第一个由数值得下标3.第一个和最后一个都不存放数据 即是备用链表的第一个的下标 4. ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
- 静态链表C语言数据结构
静态链表就是将数组实现单链表: int Malloc_SLL(StaticLinkList space) { int i = space[0].cur;//取得第一个头节点的下标 if( space[ ...
- 数据结构---栈C语言实现
#include <stdio.h> #include <stdlib.h> #define uchar unsigned char #define uint unsigned ...
- 逆波兰表达式[栈 C 语言 实现]
逆波兰表达式 逆波兰表达式又叫做后缀表达式.在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示.波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示 ...
- 静态栈抽象数据类型stack实现
#include<stdio.h> #include<stdbool.h> #include<stdlib.h> #define MAX_STACK_SIZE 10 ...
随机推荐
- AcWing 220.最大公约数 欧拉函数打卡
题目:https://www.acwing.com/problem/content/222/ 题意:求1-n范围内,gcd(x,y)是素数的对数 思路:首先我们可以针对每个素数p,那么他的贡献应该时 ...
- 将libvex移植到Visual Studio编译平台下的经验总结
1. 两难 将libvex从Linux移植到Windows,移植工作聚集于Cross-Compiler,而不是预料的Cross-Platform. VC++ Compiler到目前为止只支持C89标准 ...
- Apache—httpd服务创建个人用户主页功能
创建个人用户主页功能 第1步:开启个人用户主页功能 UserDir disabled前加# UserDir public_html 去掉前面# UserDir参数表示的是需要在用户家目录中创建的网站 ...
- Java对象toString()方法
对象的字符串表示以可读格式包含有关对象状态的信息.Object类的toString()方法表示字符串中类的对象.Object类提供了toString()方法的默认实现. 它返回一个以下格式的字符串: ...
- php调用系统命令的函数的比较
了解命令的区别并进行直观的选择 这是一篇翻译文章,原作者通过表格的形式更加直观的展现出差异并进行选择 前言 PHP有众多调用系统命令的函数,大致如下: system() exec() passthru ...
- ionic3 动态设置tabs页面底部导航栏隐藏,并显示输入框添加评论
1.先上原始效果图: 2.完成后效果 2.实现思路: ion ...
- JNI Hello World
1.什么是JNI: JNI(Java Native Interface):java本地开发接口 JNI是一个协议,这个协议用来沟通java代码和 ...
- Ubuntu14.04.1LTS不能上网解决方法之一
我们在装好了Ubuntu之后,打开浏览器,显示Server not found. 1.点击网络图标,显示如下: 2.进入etc/NetworkManager,找到 Networkmanager.con ...
- shell 脚本文件类型.sh ,变量
1. shell脚本编程的基本过程 (1)建立shell文件,以 .sh 结尾的文件 (2)赋予shell文件执行权限,chmod 0777 文件名 (3)执行shell文件, ./ 文件名 或者ba ...
- ssh-key添加之后依旧需要密码输入Bug的解决
场景重现 要求从10.183.93.181的root用户ssh免密登录至10.110.155.26的boss用户 1.在10.110.155.26 的boss用户下面新建目录.ssh 2.在10.11 ...