栈的概念

今天跟大家浅谈一下栈的概念

        栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。读和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈,删除则称为退栈。

    栈也称为后进先出表。如下图,1,2,3。1先进栈,放在最下方,随后2,3进栈。在出栈的时候3在最上面最先出栈。随后2,1出栈。:

下面,我们通过一个程序来展现一下栈在数组中的应用:

给出一个数字,要求打印出每一位数字,不考虑顺序:

本程序的思路在于将用户输入的数利用循环从个位开始取余然后,将这个数除以10将最高位去掉,依次输出取出的数据。打印的时候数字正好顺序相反。

 while(lenght>0)

         printf("%d \n",stack[--lenght]);

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int num,stack[100]={};

    int lenght=0;

    

    printf("请输入n=");

    scanf("%d",&num);

   

    while (num>0)

    {

        stack[lenght]=num%10;

        

        printf("%d ",stack[lenght]);

        lenght++;

        num=num/10;

       

    }

        

    //while(lenght>0)

    //     printf("%d \n",stack[--lenght]);

   

    return 0;

}


利用栈结构的做法,定义一个栈stack[100]={},使用lenght将数字中每次除10取余的数字回收到栈里面。 stack[lenght++]=num%10;

打印时使用:


 while(lenght>0)

         printf("%d \n",stack[--lenght]);



源代码:

#include <stdio.h>


int main(int argc, const char * argv[]) {

    int num,stack[100]={};

    int lenght=0;

    

    printf("请输入n=");

    scanf("%d",&num);

   

    while (num>0)

    {

        stack[lenght]=num%10;

        

       // printf("%d ",stack[lenght]);

        lenght++;

        num=num/10;

       

    }

        

    while(lenght>0)

         printf("%d \n",stack[--lenght]);

   

    return 0;

}






版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wahy/p/4817259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值