C语言实现顺序栈,顺便加深刻++i,++i的区别

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
/*
写在前面的话:
(1).top是栈顶元素在数组中的索引,top为-1代表空

(2).i++是先用i再加1,++i是先加1再用i

(3).顺序栈的缺点是必须事先给栈分配一个大空间(maxsize),这显然浪费存储空间

(4).顺序栈里面的元素特点是先进后出*/
typedef struct stack
{
int data[maxsize] ;
int top ;
}* PSTACK ,STACK ;
void init_stack(PSTACK st);
void push(PSTACK st ,int val);
void pop(PSTACK st);
void show(PSTACK st);
int main()
{
STACK st ;
init_stack(&st);
push(&st,1);
push(&st,2);
push(&st,3);
push(&st,4);
pop(&st);
show(&st);
return 0 ;
}
void init_stack(PSTACK st)
{
st->top = -1;
printf("初始化成功\n");
}
void push(PSTACK st ,int val)
{
if(st->top == maxsize-1)
printf("Full\n") ;

else
{
//先自增;相当于2步,(1):st->top++ (2)st->data[st->top]=val
st->data[++st->top]=val;
}
}
void pop(PSTACK st)
{
if(st->top == -1)
printf("顺序表为NULL\n");

else
{
printf("出栈的值是:%d\n",st->data[st->top]);
st->top-- ;
}
}
void show(PSTACK st)
{
printf("栈里的值是:");
while(st->top!=-1)
{
//先计算后自减:(1):st->data[st->top] (2)st->top--
printf("%d ",st->data[st->top--]);
}
printf("\n");
}

部分参考:https://blog.csdn.net/hzphyt/article/details/81369508

C语言实现顺序栈的更多相关文章

  1. C++语言实现顺序栈

    C++语言实现顺序栈 在写C语言实现顺序栈的时候,我已经向大家介绍了栈的特点以及介绍了栈的相关操作,并利用C语言实现了相关算法.在这里小编就不在继续给大家介绍了,需要温习的可以去我的博客看看.在这篇博 ...

  2. C语言实现顺序栈以及栈的特点

    什么是栈? 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如下图所示. 从上图我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 ...

  3. C语言实现顺序栈的初始化&进栈&出栈&读取栈顶元素

    /*顺序表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //设栈中元素个数为50 ...

  4. 数据结构(C语言版)顺序栈相关算法的代码实现

    这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...

  5. 纯C语言实现顺序栈

    #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int SElemType; typede ...

  6. 顺序栈的基本操作(C语言)

    由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不 ...

  7. 数据结构与算法之顺序栈C语言实现

    顺序栈是一种特殊的顺序表,主要操作是入栈和出栈.将顺序表加一些特定限制,就成了顺序栈. 注: 1.顺序栈C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简 ...

  8. 【小白成长撸】--顺序栈(C语言版)

    // 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...

  9. 栈(顺序栈)----C语言

    栈 栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底 顺序栈(顺序结构) 顺序栈:用一段连续的存储空间来存储栈中的数据 ...

随机推荐

  1. git-gitlab-github集合

    git-gitlab-github集合 git(一):     git简介 git(二):     git安装和简单使用 git(三):     git的分支管理 git(四):     git的远程 ...

  2. jmeter接口测试(登录、注册)

    Jmeter 进行接口测试流程: Jmeter 的下载地址:http://jmeter.apache.org/download_jmeter.cgi 下面举例说明使用流程,有两种参数传递的方式,我们以 ...

  3. 修改 ssh 远程连接 时间

           linux使用的是  红帽旗下 centos.         解释两个文件          /etc/ssh/sshd_config     配置ssh服务器端的          ...

  4. 在Linux实例上自动安装并运行VNC Server

    #!/bin/bash ######################################### #Function: install vnc server #Usage: bash ins ...

  5. vue简单实现

    vue简单实现 vue的三个核心 虚拟dom, 双向绑定 Proxy,

  6. Linux内存管理解析(二) : 关于Linux内存管理的大体框架

    什么是内存管理 ? 首先内存管理管理的主要对象是虚拟内存,但是虚拟内存对应的映射主要为物理内存,其次也可能通过交换空间把虚拟内存与硬盘映射起来,既然如此,那我们先了解物理内存的管理. 对于物理内存而言 ...

  7. 回到未来:Smalltalk 编程系统

    Smalltalk 是19世纪70年代由 Alan Kay 设计的,第一个以面向对象(Object-Orientation)为主要范式的编程语言 1.Smalltalk 具有大量首创的特性,深刻影响了 ...

  8. openlayers6结合geoserver实现地图矢量瓦片(附源码下载)

    内容概览 1.基于openlayers6结合geoserver实现地图矢量瓦片2.源代码demo下载 效果图如下: 实现思路:利用Geoserver发布矢量切片服务,然后openlayers调用矢量瓦 ...

  9. lua学习之深入函数第一篇

    深入函数第一篇 函数是第一类值,具有特定的词法域 第一类值 第一类值的意思是函数与 lua 中的其他类型如数字,字符串具有相同的权力 函数可以存储到全局变量或局部变量变量,还可以存储到 table 中 ...

  10. 02.JS数据类型与数据类型转换

    前言:   学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 (05)数据类型 (06)数据类型转换5.数据类型——datatype  数据 ...