• C语言 简单的栈


    //简单的栈
    
    #include<stdio.h>
    #include<stdlib.h>
    
    //栈的介绍:栈先进后出,一般用于将数据逆序输出
    //栈一般只有四种方法--进栈,出栈,清空,判断栈是否为空
    
    //定义栈的结构
    
    #define datatype int//定义栈内数据类型
    #define N 10//定义数组的大小
    struct easystacknode{
        int top;//栈顶位置
        datatype data[N];
    };
    
    typedef struct easystacknode EStack;
    
    //初始化栈
    EStack selfstack = { -1, { 0 } };
    
    //判断栈是否为空
    int isempty();
    //进栈
    int push(datatype num);
    //出栈
    int pop();
    //清空
    void setempty();
    
    void main(){
        //练习:十进制转换成二进制
        int m = 100;
        while (m!=0){
            //进栈
            push(m % 2);
            m = m / 2;
        }
        //打印出对应的二进制数据
        while (!isempty()){//直到栈为空时跳出循环
            printf("%d", pop());
        }
        printf("
    ");
        system("pause");
    }
    
    //判断栈是否为空1,1为空,0为非空
    int isempty(){
        if (selfstack.top==-1)//表示栈里一个元素也没有
        {
            return 1;
        }
        else{
            return 0;
        }
    }
    
    //进栈
    int push(datatype num){
        //先判断栈是否溢出
        if (selfstack.top==N-1)
        {
            //栈已满
            return 1;
        }
        else{
            selfstack.top += 1;//栈顶坐标+1
            selfstack.data[selfstack.top] = num;
            return 0;
        }
    }
    
    //出栈
    int pop(){
        //判断栈是否为空
        if (isempty())
        {
            return -1;
        }
        else{
            selfstack.top -= 1;//栈顶坐标-1
            return selfstack.data[selfstack.top + 1];
        }
    }
    
    //清空
    void setempty(){
        selfstack.top=-1;//栈顶坐标置为-1
    }

    总结:数组栈容量有限制,不可以无限大

  • 相关阅读:
    如何实现进程间的通信
    调试手记
    WinCE的一些忠告——UNICODE编码
    一道字符串复制的面试题目
    strcpy和strncpy区别
    关于#include头文件问题
    rs232串口通讯中,读串口与读端口的区别
    IP包过滤(转)
    小数点后截位问题
    一些函数
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5227750.html
Copyright © 2020-2023  润新知