静态栈-------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 ...
随机推荐
- BZOJ 5415: [Noi2018]归程(kruskal重构树)
解题思路 \(NOI2018\)的\(Day1\) \(T1\),当时打网络赛的时候不会做.学了一下\(kruskal\)重构树后发现问题迎刃而解了.根据\(kruskal\)的性质,如果要找从\(u ...
- 移动 web 端屏幕适配 - rem
前言 最近整理了一下以前学习前端的笔记,发现自己对移动 web 端屏幕适配(rem)这一块并没有真正理解,只是会用.接下来,把自己的一些对移动 web 端屏幕适配(rem)的思考记录下来. rem 介 ...
- nodejs操作消息队列RabbitMQ
一. 什么是消息队列 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已.其主要用途:不同进程Process/ ...
- Hadoop 家族技能图谱skill-map
----# Hadoop 家族技能图谱- Hadoop- Zookeeper- Avro- Chukwa- Ambari- Whirr- Bigtop- HCatalog- Hue- HBase- P ...
- JS-ValidForm:介绍
ylbtech-JS-ValidForm:介绍 1.返回顶部 1. 关于Validform Validform:一行代码搞定整站的表单验证! 1 $(".demoform").Va ...
- Anaconda详细安装及使用教程(带图文)
https://blog.csdn.net/ITLearnHall/article/details/81708148
- Redis 5.0.7 讲解,单机、集群模式搭建
Redis 5.0.7 讲解,单机.集群模式搭建 一.Redis 介绍 不管你是从事 Python.Java.Go.PHP.Ruby等等... Redis都应该是一个比较熟悉的中间件.而大部分经常写业 ...
- 在使用 Eclisp 生成 实体(sql Server) 出现错误 :Unable to locate JAR/zip in file system as specified by the driver definition: sqljdbc.jar.
错误: 解决方法: 第一步:点击 JAR List 第二步: 点击 Remove JAR/ZIP 第三步: 再添加一下 sqljdbc.jar
- C++——智能指针
动态内存管理:new-delete——很难正确释放内存——智能指针 使用场景: 1.程序不知道自己要使用多少对象 2.程序不知道自己所需对象的准确类型 3.程序需要在多个对象之间共享数据 4.坚持只使 ...
- HashCode方法整理
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...