Day22 洛谷P1427 小鱼的数字游戏(栈)

博客内容介绍了如何帮助小鱼解决一个数字游戏问题,游戏要求将一串以0结束的数字反向输出。输入是一串以空格间隔的整数,输出也是反向的整数序列。博客提供了使用栈作为解决方案的思路。

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 ai(长度不一定,以 0 结束),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入格式

一行内输入一串整数,以 0 结束,以空格间隔。

输出格式

一行内倒着输出这一串整数,以空格间隔。

输入输出样例

输入 #1
3 65 23 5 34 1 30 0
输出 #1
30 1 34 5 23 65 3

说明/提示 数据规模与约定

对于100% 的数据,1≤ai​≤2^31-1,数字个数不超过 100。

答案(栈)

#include<iostream>
using namespace std;
int a[101];//如果你的第一个数存储在a[1]里,一定要多开一两个空间 ,以防越界访问
int top=0,c;
int main(){
	while(1){
		cin>>c;
		if(c==0) break;
		a[++top]=c;
		/*
		或者写成:
		top++;
		a[top]=c;
		个人比较喜欢压码……
		*/ 
	}
	while(top!=0){
		cout<<a[top--]<<" ";
		/*
		或者写成:
		cout<<a[top];
		top--;
		*/ 
	}
	return 0;
} 

答案(指针)

#include<stdio.h>
int main()
{
    int a[105]={1};
    int *p=a;
    scanf("%d",p++); 
    while (*(p-1)!=0){
        scanf("%d",p++);
    }
    p--;
    while (p!=a){
        p--;
        printf("%d ",*p);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值