栈的概念
来源:互联网 发布:越狱苹果抹除所有数据 编辑:程序博客网 时间:2024/06/14 05:22
今天跟大家浅谈一下栈的概念
栈(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]);
return0;
}
利用栈结构的做法,定义一个栈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]);
return0;
}
- 栈、堆的概念
- 栈的概念
- 概念架构的概念
- 堆和栈的概念
- 堆和栈的概念
- 栈的概念及实现
- 堆和栈的概念
- 堆和栈的概念
- js的栈堆概念
- 栈的概念和实现
- 概念、概念的提出、概念的定义
- ->的使用及堆,栈的概念
- 堆和栈的概念 (转载)
- 堆和栈的区别 概念
- RTEMS 操作系统的概念:堆与栈
- 栈的概念与相关操作
- 栈的概念、实现以及应用
- 深度剖析Struts2中值栈的概念
- Cocos2d-x 发布android版本中加人iconv库
- Unity3d for android 访问UI控件报错 Can\'t create handler inside thread that has not called Looper.prepare()
- 抓取网页信息,下载网络图片到本地
- 太凶残了:程序员的终极复仇方式
- set使用
- 栈的概念
- hdu5296
- MFC学习笔记.day01-WINMAIN,MSG,WNDCLASS,ID-HANDLE-HWND,图标光标
- epoll介绍和使用
- Fast and accurate short read alignment with Burrows-Wheeler transform
- Java的基本数据类型全解(by 星空武哥)
- Ansible常用模块
- hdu 5289 Assignment (rmq模版)
- oc002---定义OC的类和创建OC的对象