一.静态栈的简单操作

先来简单的了解一下栈
1.栈:一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,栈又称为 后进先出的线性表。

特性栈:后进先出(LILO)特殊线性表
栈功能:将数据从一种序列改变为另一种序列

2.顺序栈和顺序表数据成员相同,不同之处: 顺序栈的入栈和出栈操作只允许对当前栈顶进行操作

顺序栈所有的的操作时间复杂度为O(1)
注意:面试中如果需要用到栈,封装静态栈

下边来看一些对栈进行简单操作的代码

stack.h

#pragma once
#include<stdio.h>
#include<Windows.h>typedef int DataType;
#define MAX_SIZE 100 typedef struct Stack
{
DataType _array[MAX_SIZE];
int _top;
}Stack;// 栈的初始化
void StackInit(Stack* s);// 入栈
void StackPush(Stack* s, DataType data);// 出栈
void StackPop(Stack* s);// 获取栈顶元素
DataType StackTop(Stack* s);// 获取栈中元素个数
int StackSize(Stack* s);// 检测栈是否为空
int StackEmpty(Stack* s);//打印栈
void stackprint(Stack* s);

stack.c

#include"stack.h"//初始化栈
void StackInit(Stack* s)
{
if (NULL == s)
{return;
}
s->_top = (Stack*)malloc(sizeof(Stack));
s->_top = 0;
}//入栈
void StackPush(Stack* s, DataType data)
{
if (NULL == s)
{printf("栈已空!!!");return;
}s->_array[s->_top] = data;
++s->_top;}//出栈
void StackPop(Stack* s)
{
if (NULL == s)
{printf("栈已空!!!");return;
}
if (s->_top == 0)
{printf("栈已空!!!");return;
}
s->_top--;}//打印栈顶元素
DataType StackTop(Stack* s)
{
if (NULL == s)
{printf("栈已空!!!");return 0;
}
return s->_array[s->_top - 1];}//打印栈的元素个数
int StackSize(Stack* s)
{
if (NULL == s)
{printf("栈已空!!!");return 0;
}
return s->_top;
}//判断元素是否为空
int StackEmpty(Stack* s)
{
if (NULL == s)
{printf("栈已空!!!");return 0;
}
if (s->_top == 0)
{printf("栈已空!!!");return 0;
}return 1;}//打印栈
void stackprint(Stack* s)
{
int i = 0;
if (NULL == s)return;
for (; i < s->_top; i++)
{printf("%d ", s->_array[i]);}
printf("\n");}

test.c

#include"stack.h"void test()
{Stack s;StackInit(&s);StackPush(&s,2);StackPush(&s,3);StackPush(&s,4);StackPush(&s,5);stackprint(&s);StackPop(&s);stackprint(&s);StackTop(&s);}int main()
{test();system("pause");return  0;}

【数据结构】栈的简单理解以及对栈的基本操作相关推荐

  1. python实现栈的操作_python简单实现队列和栈push、pop操作

    栈: # -*- coding: utf-8 -*- #定义序列 lst=[] def pop(): if(len(lst)==0): print"栈为空","无法出栈& ...

  2. 栈(stack)简单实现,系统栈是如何保存函数调用信息的?

    系统栈和栈 自己实现个栈很简单,但是用栈的思想在有时候比较抽象,尤其是在使用系统栈的时候(递归).栈的主要特点就像是你放很多大木板子在你的收纳盒里,模板放入后,每次只能取走最后放入的模板,是" ...

  3. linux 虚拟机大量udp请求失败_理解 Linux 网络栈:Linux 网络协议栈简单总结分析...

    1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的.Linu ...

  4. 数据结构与算法--简单栈实现及其应用

    栈 栈(Stack)是一种限制插入和删除只能在一个位置上进行的表,改位置是表的末端,叫做栈顶top.栈的基本操作有push (进栈)pop(出栈) 栈又叫做LIFO(后进先出)表,下图展示普通push ...

  5. 基于java的数据结构学习——数组实现的栈以及简单应用C++实现

    基于java的数据结构学习--数组实现的栈以及简单应用的 C++ 实现 源码: // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTUR ...

  6. 数据结构栈的简单实现(JAVA)

    新的改变 栈是线性数据结构的一种,相当于一个箱子,如果向往箱子里放书,第一本书肯定是放入箱底,但是取出来的时候是从最上面开始取的,并拿不到最里面的东西,所以元素是先进后出的,栈最上面的元素为栈顶元素. ...

  7. java的栈堆的理解_理解堆与栈 - 一步一个脚印 - BlogJava

    一.引言: 一直不太明白堆与栈到底是什么,是指一块内存区呢,还是指一种数据结构?编写程序中总提到内存分配的栈与堆的区别,静态与动态分配等,总也弄不明白,隐约知道一点,但总分不清堆与栈到底是一块内存区还 ...

  8. 数据结构(C语言版)之栈及递归

    目录 前言 正文 一.栈 1.栈的概念及术语 1.定义 2.逻辑结构 3.存储结构 4.运算规则 5.实现方式 6.栈是一种特殊的线性表,它的逻辑结构和存储结构与线性表相同,其特殊性体现在" ...

  9. 数据结构(C语言第二版)严蔚敏编,数据结构电子教材,线性表,栈,队列,顺序存储结构,初始化,入栈,出栈,入队,出队,c++

    前言 提示:本篇文章收录严蔚敏编写的数据结构C语言版本 简单介绍一下顺序表,顺序栈,循环队列,的顺序存储结构之间的区别 代码参考严蔚敏编写的<数据结构>,二维码动态演示可扫码可观看. - ...

最新文章

  1. 【廖雪峰Python学习笔记】错误、调试、测试
  2. 基于python的快速傅里叶变换FFT(二)
  3. 云网融合 — 云网业务统一管控技术
  4. shell逻辑运算符优先级_ios从入门到放弃之C基础巩固运算符
  5. UI组件之TextView及其子类(三)ToggleButton和Switch
  6. python3 字符串前字母(无前缀,前缀u,前缀b,前缀r)含义
  7. Linux强行取消挂载
  8. PyTorch-Transformers:一款可处理最先进NLP的惊人模型库
  9. [Serializable]在C#中的作用——实现.NET对象序列化
  10. 把collections.Counter的计数结果转为pandas的DataFrame
  11. MikroTik RouterOS U盘安装工具netinstall的使用
  12. 《Java多线程编程核心技术》学习笔记(1)
  13. echarts制图详解
  14. android 虚拟键 高度,Android获取虚拟按键的高度(适配全面屏)
  15. CSS第三章:8.设置元素圆角、椭圆角效果
  16. linux系统 ifconfig 命令无法找到
  17. 利用摄像头拍照并保存
  18. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)
  19. 2016乌云白帽大会企业场(主会场)
  20. C语言数组的初始化总结

热门文章

  1. D. Shuffle(cf)暴力枚举 + 组合数学
  2. Ubantu 一条命令安装宝塔
  3. 限制guest账号访问硬盘权限
  4. 卡耐基梅隆大学计算机熬夜,美国25所著名大学学生平均作息时间表 原来留学生的日子也不好过!...
  5. div css背景自动渐变色,div+css背景渐变色代码
  6. 基于企业微信机器人实现预警功能
  7. 快要2022年了,拼多多还在做这件事
  8. 拼多多关键词推广技巧有哪
  9. C# winfrom NPOI导出Excel 添加视频、音频文件
  10. Elasticsearch的查询