堆栈是一个最后出来该数据结构.

栈的基本操作包含:入栈,出栈,初始化栈,清空栈,遍历栈.

C代码例如以下:

#include <stdio.h>

#define MaxSize 20
typedef int ElemType; typedef struct stack
{
ElemType Data[MaxSize];
int top;
}Stack; //初始化栈
void InitStack(Stack *S)
{
S->top=-1;
} //入栈
void PushStackValue(Stack *S)
{
printf("Input the Value of stack member:\n(0-exit)\n");
int value;
printf("Please input the 1st value of stack:\n");
scanf("%d",&value);
S->Data[++S->top]=value;
while(value)
{
S->top++;
printf("Please input the %dst value of stack:\n",S->top+1);
scanf("%d",&value);
S->Data[S->top]=value;
}
} //出栈
void PopStackValue(Stack *S)
{
if(S->top>=0)
{
printf("the stack %dst value pop out: %d\n",S->top+1,S->Data[--S->top]);
}
else
{
printf("The Stack is empty\n");
}
} //推断栈空
void IsEmpty(Stack *S)
{
if(S->top==-1)
{
printf("The Stack is empty.\n");
}
else
{
printf("The stack is not empty.\n");
}
} //清空栈
void ClearStack(Stack *S)
{
S->top=-1;
} //遍历栈
void ScanStack(Stack *S)
{
int i;
int len=S->top-1;
int StackArray[len];
for(i=len;i>0;i--)
{
StackArray[i]=S->Data[i--];
}
printf("The all stack member(from top to bottom) is:\n");
while(len>=0)
{
printf("%d ",S->Data[len--]);
}
printf("\n");
} void main()
{
Stack S; InitStack(&S);
PushStackValue(&S);
ScanStack(&S);
IsEmpty(&S);
PopStackValue(&S);
PopStackValue(&S);
PopStackValue(&S);
PopStackValue(&S);
}

执行结果例如以下:

转载请注明:刘

版权声明:本文博客原创文章。博客,未经同意,不得转载。

堆C数组实现的更多相关文章

  1. java中数组的基本知识

    数组{ 物以类聚 人以群分 avg sum 数组 数组的概念[ 数组:一组具有相同数据类型的集合 ] 数组的语法[ 先声明 后使用 声明数组: 数据类型+[]+ 变量名 ;/ 数据类型+变量名 +[] ...

  2. 数据结构图文解析之:二叉堆详解及C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

  3. java基础(环境设置,基础语法,函数数组)

    框架图 环境搭建 课程中常见dos命令: dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd/ : 退回到 ...

  4. 洛谷P3378 【模板】堆

    P3378 [模板]堆 160通过 275提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 经实际测试 堆的数组开3000- 题目有个问题 为什么这个按课本堆标准打的- ...

  5. 二叉堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本.还是那句话,它们的原理一样,择其一了解即可. 目录1. 二叉堆的介绍2. 二叉堆的图文解析3. 二叉堆的Java实现(完整源码) ...

  6. 利用堆排序找出数组中前n大的元素

    #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <time.h> ...

  7. 【Algorithm】堆排,C++实现

    对一个数组中的元素按照顺序构建二叉树,就形成了一个(二叉)堆.(二叉树是虚拟的,并不是真的建立二叉树) 表示堆的数组A有两个重要属性:A.heapSize,表示堆里面有多少元素,数组里有多少元素在堆里 ...

  8. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

  9. Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序

    前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的re ...

随机推荐

  1. MySQL各种日期类型与整型(转)

    日期类型 存储空间 日期格式 日期范围 datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 t ...

  2. 3、采用Gradle创Libgdx工程

    (原文链接:http://www.libgdx.cn/topic/20/3-%E4%BD%BF%E7%94%A8gradle%E5%88%9B%E5%BB%BAlibgdx%E9%A1%B9%E7%9 ...

  3. Objective-C该Protocol

    Objective-C该Protocol Protocol 简单来说就是一系列方法的列表,当中声明的方法能够被不论什么类实现,这样的模式一般称为(delegation)模式 在iOS中和OS X中,A ...

  4. C++指针和引用简介

    摘要 本文介绍C++指针和概念引用 这是一个指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用差别 指针和引用的同样点和不同点 **什么是指针** 指针就是一个存放地址的 ...

  5. RH133读书 笔记(4) - Lab 4 System Services

    Lab 4 System Services Goal: Develop skills using system administration tools and setting up and admi ...

  6. cocos2d-x -- 渠道SDK【棱镜】接入(1)

    棱镜SDK简单介绍 若想让游戏上线,渠道接入步骤是不可缺少的,为了避免一对一接入渠道问题,我选择了棱镜SDK,由于棱镜是游戏与渠道SDK的中间层,为CP厂商屏蔽各个渠道SDK之间的差异,整个接入过程, ...

  7. Android系统APN配置具体解释

     Android 系统APN配置具体解释 这些天一直在调系统原生的Settings.apk里面APN配置的问题.在设置里面手动添加了APN配置选项.可是在界面上还是看不到.所以跟了下代码.原以为就是简 ...

  8. Java爬虫,信息抓取的实现(转)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23272657 今天公司有个需求,需要做一些指定网站查询后的数据的抓取,于是花了点 ...

  9. 2014 ACM湖南匹配10会议省赛

    2014湖南游戏..... 1:牡丹江Regional有些球队没来的冲突 2:题目比較水 3:队友神勇发挥 最终在开局不利的情况下完毕了翻盘,拿到了第二名.....没有抓住机会顺势夺冠还是非常遗憾的. ...

  10. InputMonitor注意事项

    文章只记录自己的点点理解.为了你自己的参考. 1.mInputFocus WMS.addWindow()-->WMS.finishUpdateFocusedWindowAfterAssignLa ...