堆栈之数组实现

#include<iostream>
using namespace std;
struct Stack
{
    int maxCnt;
    int* elements;
    int top,bottom;
};
Stack* createStack(int max=100)
{
     Stack* stack = (Stack*)malloc(sizeof(Stack));
     stack->top=0;
     stack->bottom=0;
     stack->maxCnt=max;
     stack->elements = new int[ stack->maxCnt];
     return  stack;
}

bool push(Stack* stack,int value)
{
    if(stack->top>=stack->maxCnt)
        return 0;
    stack->elements[stack->top++]=value;
    return 1;
}
bool isEmpty(Stack* stack)
{
    return stack->top<=0;
}
bool pop(Stack* stack,int* ans)
{
    if(isEmpty(stack))
      return 0;
    *ans = stack->elements[--stack->top];
    return 1;
}
bool top(Stack* stack,int* ans)
{
    if(isEmpty(stack))
      return 0;
    *ans = stack->elements[stack->top-1];
    return 1;
}

void clearStack(Stack* stack)
{
    int x;
    while(!isEmpty(stack))
    {
        pop(stack,&x);
    }
}

void outPut(Stack* stack)
{
    int x;
    while(!isEmpty(stack))
    {
        pop(stack,&x);
        cout<<x<<" ";
    }
    cout<<endl;
}

void main()
{
    int len=12;
    Stack* st = createStack();
    int v;
    for(int i=0;i<len;i++)
    {
         v = rand() % 100;
         cout<<v<<" ";
         push(st,v);

    }
    cout<<endl;
    outPut(st);
    clearStack(st);
    for(int i=0;i<5;i++)
    {
         v = rand() % 100;
         cout<<v<<" ";
         push(st,v);

    }
    cout<<endl;
    outPut(st);

    for(int i=0;i<5;i++)
    {
         v = rand() % 100;
         cout<<v<<" ";
         push(st,v);

    }
    cout<<endl;
    //outPut(st);

    pop(st,&v);
    cout<<v<<endl;
    ///outPut(st);

    top(st,&v);
    cout<<v<<endl;
    outPut(st);
    cin>>len;
}
时间: 2024-12-31 14:01:02

堆栈之数组实现的相关文章

【基础】运算符,堆栈,数组

一.运算符:优先级,结合性 一句话总结:点号自反非,算关逻赋移. 二.java关键字 instanceof 实例 volatile 易失 super 父类,超类 transient 短暂 synchronized 线程,同步 strictfp 严格,精准 package 包 throws 声明一个异常可能被抛出 native 本地 throw 抛出一个异常对象 try 捕获异常 catch 处理异常  finally 有没有异常都执行 switch 开关 case 返回开关里的结果 this 本

队列堆栈和数组-三角矩阵

#include<iostream> #include <iomanip> using namespace std; enum TriangleTye{leftBottom,leftUp,rightBottom,rightUp}; struct TriangleMatrix { int* nums; int scale; TriangleTye triangleTye; int size; }; TriangleMatrix* createTriangleMatrix(int sc

队列堆栈和数组-十字链表矩阵

#include<iostream> #include <iomanip> #include"windows.h" using namespace std; struct OLinMatrixkNode { int data; int x,y; OLinMatrixkNode* right; OLinMatrixkNode* down; }; struct OLinMatrix { OLinMatrixkNode** RowHead; OLinMatrixkNo

数据结构之堆栈(数组实现)

/***************************** Date   : 2015-07-20* Description: stack.h*****************************/#ifndef _STACK_H#define _STACK_H template<class T>class Stack{public: Stack(int MaxStackSize = 10); ~Stack() {delete [] stack;} bool IsEmpty() cons

堆栈数组实现

//堆栈,数组实现#include<iostream>using namespace std;#define Maxsize 100class stack{public: int data[Maxsize]; int top = -1; //保存栈顶下标值};int pop(stack*ptrl); //出栈void push(stack*ptrl,int x);//进栈int main(){ stack l; stack*ptrl = &l; int i,m; for (i = 0;

Java版——堆栈

1.堆栈是一种线性数据结构,先进后出. 2.应用一:在程序中匹配分隔符(在 java程序中读取一个字符,如果它是左分隔符就将他压入堆栈.如果它是右分隔符,就将他和栈中弹出的一个分隔符相比较,如果匹配,就继续处理,否则就发出了一个错误信号,停止处理) 应用二:执行一些非常大的数字的加法. 应用三:java中的jvm是基于堆栈的. 3.堆栈的数组链表实现 1 package sequence_stack; 2 3 public class sq_Stack { 4 private java.util

C#编程(七十六)----------使用指针实现基于栈的高性能数组

使用指针实现基于栈的高性能数组 以一个案例为主来分析实现方法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 基于堆栈的数组 { class Program { static void Main(string[] args) { int[] i = new int[10]; Console.W

JPDA 架构研究8 - Agent利用环境指针访问VM(堆栈管理篇)

引入: 上篇文章讲解了Agent利用环境指针访问VM的线程组操作,这里讨论下堆栈操作. 分类4:堆栈操作 a. GetStackTrace.获取某线程的堆栈. jvmtiError GetStackTrace(jvmtiEnv* env,             jthread thread,             jint start_depth,             jint max_frame_count,             jvmtiFrameInfo* frame_buff

MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)

转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环.使用不安全代码和如何调用Win32 API 数组 本程序分配一个int型的数组并给他的元素赋值,然后打印出元素和数组的长度. 命令: newarr type— 生成一个元素类型为type 的数组.数组的大小必须在调用该命令前装入堆栈.该命令会把一个数组的引用装入堆栈. stelem.i4— 给一个