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");
    }
  • 相关阅读:
    Python3之redis使用
    python3中urllib的基本使用
    最安全的api接口认证
    Python—I/O多路复用
    Python—RabbitMQ
    Python—sqlalchemy
    python操作MongoDB
    Python—进程、线程、协程
    推断client手机类型,并跳转到对应的app下载页面
    ExtJs--13-- Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和差别比較
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5132252.html
Copyright © 2011-2022 走看看