南邮1004:线性表操作


时间限制(普通/Java)
 :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 3480            测试通过 : 759 

题目描述

线性表是n个元素的有序集合(n≥0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。

请在顺序表上实现运算,实现顺序表的逆置,删除表中所有元素值等于x的元素。



输入

三组数据,顺序表元素类型分别为整型、字符型和实型。

每一组第一行给出元素数目n(0<n≤1000),第二行给出元素数值,第三行给出待删除的元素。

输出

三组数据,每一组第一行给出逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素,每一个输出元素后均有一个空格,如果元素全部被删除,那么输出一个空行。

样例输入

8
1 2 3 7 5 6 7 8 
7
3
a c m
h
4
1.2 3.4 5.6 7.8
1.2

样例输出

8 7 6 5 7 3 2 1 
8 6 5 3 2 1 
m c a 
m c a 
7.8 5.6 3.4 1.2 
7.8 5.6 3.4 

代码:

#include<iostream>
#include<string>
using namespace std;
struct node
{
    string s;
    node *next;
};
int main()
{
    int count;
    for(count=0;count<3;count++)
    {
        int i,n;
        cin>>n;
        struct node *head=new struct node;
        head->next=NULL;
        for(i=0;i<n;i++)
        {
            struct node *p=new struct node;
            cin>>p->s;
            p->next=head->next;
            head->next=p;
            //head=p;
        }
        struct node *q;
        for(q=head->next;q;q=q->next)
            cout<<q->s<<" ";
        cout<<endl;
        string cut;
        cin>>cut;
        struct node *s1=head;
        struct node *s2=head->next;
        while(s2)
        {
            if(s2->s==cut)
            {
                s1->next=s2->next;
                s2=s2->next;
            }
            else
            {
                s1=s1->next;
                s2=s2->next;
            }
        }
        
        for(q=head->next;q;q=q->next)
            cout<<q->s<<" ";
        cout<<endl;
    }
    return 0;     
}

你可能感兴趣的:(南邮1004:线性表操作)