静态栈-------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 ...
随机推荐
- LG1010 幂次方
题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) ...
- 【运维】使用Serv-U搭建FTP服务器
1.先安装好Serv-U,并作为系统服务安装 2.打开Serv-U,新建一个域 3.添加用户 4.解决阿里云专有网络的一个问题 遇到一个情景:需要使用Serv-U进行FTP更新软件,其中使用PASV的 ...
- 树莓派2代 B型 4核 1G内存 raspberry pi 2 model B
树莓派技术交流群:318799602 期盼已久的PI2 已经到货,Element14版,非RS版本.诚信卖家如期发货,不会像某些淘宝卖家一样,没有货还标注现货,发货时间一拖再拖. 树莓派的最新力作!! ...
- MySQL允许远程登录配置
1.查看user表mysql> use mysqlReading table information for completion of table and column namesYou ca ...
- python3练习,做一个迷宫生成程序
直接上代码: #!/usr/bin/python3 #coding=utf-8 import random import tkinter as tk class Cell(): TOP = (0) R ...
- Java 空字符串和 字符串为null的区别
之前一直没有搞清楚 字符串为空和字符串为null的区别,今天写代码一直出现NullPointerException异常,我一直没有搞清楚,后来发现我是这样写的 String s = null; s = ...
- linux卸载
centos平台 yum remove xxxrpm包,rpm -e xxxtar包直接删除该文件或者make uninstall xxx
- FPGA 报错ERROR:Simulator:861 – Failed to link the design。
问题综述: 我使用的是windows 10 32位专业版系统,电脑装的是ISE14.4版本,当我用此ISE自带的仿真器ISIM来仿真时,仿真器总是报错ERROR:Simulator:861 – Fai ...
- java 重新学习 (三)
一.静态初始化块和声明静态成员变量时所指定的初始化值都是该类的初始化代码,他们的执行顺序与源程序中的排列顺序相同. static int a = 9 ; static{ a = 6; } public ...
- PHP CURL 模拟form表单上传遇到的小坑
1:引用的时候 $parans ['img']=new \CURLFile($param); 传入的文件 在PHP版本5.5以上记得new CURLFile 不然会上传不成功 /** * http p ...