zoukankan      html  css  js  c++  java
  • 栈的模拟

    //static.h
    #include <stdlib.h>
    #include <stdio.h>
    #include <memory.h>
    
    #define N 100
    
    typedef struct stack
    {
        int data[N];
        int top;//标识栈顶
    }Stack;
    
    void init(Stack *p);//初始化
    int isEmpty(Stack *p);//判断栈是否空
    int isFull(Stack *p);//判断栈溢出
    int getTop(Stack *p);//获取栈顶
    void push(Stack *p, int key);//插入数据
    void pop(Stack *p);//出栈
    void show(Stack *p);
    //stack.c
    #include "static.h"
    
    
    void init(Stack *p)//初始化
    {
        p->top = -1;//代表为空
        memset(p->data, 0, sizeof(int)*N);//数据清零
    }
    
    int isEmpty(Stack *p)//判断栈是否空
    {
        if (p->top == -1)
        {
            return 1;//1为空
        }
        else
        {
            return 0;
        }
    }
    
    int isFull(Stack *p)//判断栈溢出
    {
        if (p->top == N - 1)
        {
            return 1;//溢出
        }
        else
        {
            return 0;
        }
    }
    
    int getTop(Stack *p)//获取栈顶
    {
        return p->data[p->top];//获取栈顶
    }
    
    void push(Stack *p, int key)//插入数据
    {
        if (isFull(p) == 1)
        {
            return;
        }
        else
        {
            p->top++;
            p->data[p->top] = key;//压入数据
        }
    }
    
    void pop(Stack *p)//出栈
    {
        if (isEmpty(p) == 1)
        {
            return;
        }
        else
        {
            p->top -= 1;
        }
    }
    
    void show(Stack *p)
    {
        if (isEmpty(p) == 1)
        {
            return;
        }
        else
        {
            printf("
    栈的数据是
    ");
            for (int i = 0; i <= p->top; i++)
            {
                printf("%4d", p->data[i]);
            }
            printf("
    ");
        }
    }
    //main.c
    #include "static.h"
    
    void main()
    {
        int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
    
        Stack myStack;
        init(&myStack);
        for (int i = 0; i < 10; i++)
        {
            push(&myStack, a[i]);
        }
        while (!isEmpty(&myStack))
        {
            printf("%d", getTop(&myStack));
            pop(&myStack);
        }
        printf("
    ");
    
        system("pause");
    }
  • 相关阅读:
    centos已经安装了python2,同时安装python3
    linux下判断磁盘是ssd还是hdd
    Java中如何判断两个对象是否相等
    NPOI导出Excel和基于office导出Excel比较
    asp
    又找到了一个blog
    关于宋朝及中国历史的一点想法
    Android中实现EditText圆角
    Python小练习
    软件架构设计(三) 架构、架构师和架构设计
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5132252.html
Copyright © 2011-2022 走看看