静态栈-------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 ...
随机推荐
- SpringMVC·form表单Date类型问题导致的400问题
问题描述 前端传yyyy-MM-dd hh:mm:ss格式的时间其实是String类型导致JavaBean中的Date类型Setter报错,从而导致api请求400. 问题解决 我的解决方式: 在对应 ...
- svn提交代码失败提示清理(清理失败并且报错信息乱码解决办法)
原因是;svn的数据库队列原因 1,下载sqlite3.exe, sqlite官网http://www.sqlite.org/download.html) 2.在Windows的D盘中新建tools ...
- sublime useful packages
Package control Prefixr Emmet
- http相应状态码大全
100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议 200 OK 一切正常,对GET ...
- 转 Python - openpyxl 读写操作Excel
Python - openpyxl 读写操作Excel openpyxl特点 openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...
- tonight i need your body
wdnmd wdnmd 再lable中我们有几个不同的type参数: text 写的是文本类型的参数 password 不管输入的是什么显示的都是星星 date 输入的是一个日历本 ...
- Python之字典中的键映射多个值
字典的键值是多个,那么就可以用列表,集合等来存储这些 键值 举例 print({"key":list()}) # {'key': []} print({"key" ...
- Linux运行jar包
要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行. 在linux系统中运行jar ...
- spark编写UDF和UDAF
UDF: 一.编写udf类,在其中定义udf函数 package spark._sql.UDF import org.apache.spark.sql.functions._ /** * AUTHOR ...
- vue static和assets的区别
static和assets的区别,原理就在于webpack是如何处理静态资源的 assets 1)在vue组件中,所有模板和css都会被vue-html-loader和css-loader解析,并查找 ...