Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62305
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 256
  • 用 户 组: 普通用户
  • 注册时间: 2015-09-10 17:54
个人简介

成功,总是从一点一滴小事做起!!!

文章分类

全部博文(30)

文章存档

2016年(5)

2015年(25)

我的朋友

分类: C/C++

2015-09-16 23:51:04

        在今天说的单链表之前我首先想要各位看官们知道一下怎么用C++输入带有空格的字符串,以及这些符号的用法,比如getline(cin,str);  cin.get(s); cin.get(p,100);gets(ss),getchar();等等的方法运用问题,之后再看这道题上就不会太生涩了。
        题目大意输入多组数据。
                        对于每组数据,第一行为一个数字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);
    }
}
阅读(1351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~