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");
    }
  • 相关阅读:
    http强转https websocket
    apache http添加证书转成https
    insert into
    分割字符串和截取字符串:split 和substring
    java实现http请求
    Oracle 中 decode 函数用法
    LeetCode:154. 寻找旋转排序数组中的最小值 II
    LeetCode:153. 寻找旋转排序数组中的最小值
    LeetCode:151. 翻转字符串里的单词
    LeetCode:145. 二叉树的后序遍历
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5132252.html
Copyright © 2011-2022 走看看