堆C数组实现
堆栈是一个最后出来该数据结构.
栈的基本操作包含:入栈,出栈,初始化栈,清空栈,遍历栈.
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数组实现的更多相关文章
- java中数组的基本知识
数组{ 物以类聚 人以群分 avg sum 数组 数组的概念[ 数组:一组具有相同数据类型的集合 ] 数组的语法[ 先声明 后使用 声明数组: 数据类型+[]+ 变量名 ;/ 数据类型+变量名 +[] ...
- 数据结构图文解析之:二叉堆详解及C++模板实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- java基础(环境设置,基础语法,函数数组)
框架图 环境搭建 课程中常见dos命令: dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd/ : 退回到 ...
- 洛谷P3378 【模板】堆
P3378 [模板]堆 160通过 275提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 经实际测试 堆的数组开3000- 题目有个问题 为什么这个按课本堆标准打的- ...
- 二叉堆(三)之 Java的实现
概要 前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本.还是那句话,它们的原理一样,择其一了解即可. 目录1. 二叉堆的介绍2. 二叉堆的图文解析3. 二叉堆的Java实现(完整源码) ...
- 利用堆排序找出数组中前n大的元素
#include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <time.h> ...
- 【Algorithm】堆排,C++实现
对一个数组中的元素按照顺序构建二叉树,就形成了一个(二叉)堆.(二叉树是虚拟的,并不是真的建立二叉树) 表示堆的数组A有两个重要属性:A.heapSize,表示堆里面有多少元素,数组里有多少元素在堆里 ...
- Java之--Java语言基础组成—数组
Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...
- Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的re ...
随机推荐
- C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher
原文:C#取硬盘.CPU.主板.网卡的序号 ManagementObjectSearcher private void button1_Click(object sender, EventArgs e ...
- Best Time to Buy and Sell Stock I,II,III [leetcode]
Best Time to Buy and Sell Stock I 你只能一个操作:维修preMin拍摄前最少发生值 代码例如以下: int maxProfit(vector<int> & ...
- [LeetCode299]Bulls and Cows
题目: You are playing the following Bulls and Cows game with your friend: You write down a number and ...
- Lua Development Tools (LDT)
http://www.eclipse.org/ldt/ Lua Development Tools (LDT) is about providing Lua developers with an ID ...
- 【干货】免费获得WebStorm软件
内容提要: 1.WebStorm简介 2.如何免费获得WebStorm 3.利用学生身份免费获得正式版WebStorm WebStorm简介 WebStorm 是一款前端开发 IDE(集成开发环境), ...
- 【Android进阶】Activity和Fragement中onSaveInstanceState()的使用详解
在activity(或者是fragement)被杀掉之前调用保存每个实例的状态,以保证该状态可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle) (传 ...
- java 二维码原理以及用java实现的二维码的生成、解码(转)
http://blog.csdn.net/songylwq/article/details/8643948 http://sjsky.iteye.com/blog/1136934 http://bbs ...
- MVC 5 Ajax + bootstrap+ handle bar 例: 实现service 状态
Js Script <script src="../../Scripts/handlebars-v1.3.0.js"></script> <scrip ...
- R语言和数据分析十大:购物篮分析
提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛 ...
- 读书时间《JavaScript高级程序设计》二:面向对象
接着上次的进度,开始看第6章. 第6章 面向对象的程序设计 理解对象 创建自定义对象最简单的方式就是创建一个 Object 的实例,然后为它添加属性和方法. var person = new Obje ...