题目大意:输入多组数据。
对于每组数据,第一行为一个数字n(1<=n<=100)。
第二行到第(n+1)行,每行为一个字符串(1<=字符串长度<=100),之后用输入的顺序,倒着把输入的字符串输出(可能有空格)
例:输入:
8 FFFBBBB mushroom flysnow wang big pei little lion yu egg spring fish yello boss
输出:
yello boss
spring fish
yu egg
little lion
wang big pei
flysnow
mushroom
FFFBBBB
解题思路: 主要这个题规定了必须用单链表进行表达,所以这道题可以用头插法或者尾插法中的一种进行存储,之后从头或者从末尾进行输出即可(下例是头插法)。。。。
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#define maxsize 110
using namespace std;
//string str[maxsize];
typedef struct node
{
char ans[maxsize];
node *link;
}linknode;
void print(linknode *&str,int &x)
{
linknode *last=str->link;
for(int k=1;k<=x;k++)
{
cout<<last->ans<<"\n";
last=last->link;
}
}
void delete_(linknode *&str)
{
linknode *free =str;
str=str->link;
while(str!=NULL)
{
delete free;
free=str;
str=str->link;
}
}
int main()
{
int n;
while(cin>>n)
{
getchar(); // 注意这里,千万不能漏掉,不然在输入数字之后敲的回车,会当做第一个字符串输入到单链表中,
// 造成错误,这里的作用就是用来读走这个回车
linknode *first=new linknode;
for(int i=1;i<=n;i++)
{
linknode *p=new linknode;
gets(p->ans);
p->link=first->link;
first->link=p;
}
print(first,n);
delete_(first);
}
}