实验7:Problem A: STL——灵活的线性表

Home Web Board ProblemSet Standing Status Statistics

Problem A: STL——灵活的线性表

Problem A: STL——灵活的线性表

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 2986  Solved: 1092
[Submit][Status][Web Board]

Description

数组和链表是我们熟知的两种线性结构,但是它们不够灵活(不能同时实现直接插入、删除和访问操作),给你若干种操作,你能通过一种灵活的容器,实现它们的功能吗?

操作1:Build a b (产生一个大小为a的线性表,其值全部赋为b,每组样例仅出现一次,在起始行)

操作2:Modify a b (将线性表的第a个元素的值设为b)

操作3:Insert a b c (在线性表的第a个位置插入第b到第c个位置的所有元素)

操作4:Erase a b(删除线性表第a到第b个位置的所有元素)

操作5:Print a b (输出线性表的第a到第b个元素)

程序在执行操作5的时候要输出结果,格式如“[1]:3 [2]:4 [3]:5”([]内为线性表的位置,“:”后面为元素的值,不带引号,每组输出占一行)

Input

输入有多行,对应5个操作,以EOF结束

Output

见Sample

Sample Input

Build 10 1
Modify 2 2
Insert 3 1 2
Modify 6 4
Erase 3 5
Print 1 8

Sample Output

[1]:1 [2]:2 [3]:4 [4]:1 [5]:1 [6]:1 [7]:1 [8]:1

HINT

使用vector可以很容易解决

Append Code

[Submit][Status][Web Board]

HOME
Back


-->

???<中文?????English???All Copyright Reserved 2010-2011SDUSTOJTEAMGPL2.02003-2011HUSTOJ ProjectTEAM
Anything about the Problems, Please Contact Admin:
admin

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    string l;
    int m,n,k;
    vector<int> a;
    vector<int>::iterator p;
    ///a.clear();
    while(cin>>l){
    if(l=="Build"){cin>>m>>n;a.assign(m,n);}
    else if(l=="Modify"){cin>>m>>n;a[m-1]=n;}
    else if(l=="Insert"){cin>>m>>n>>k;a.insert(a.begin()+m-1,a.begin()+n-1,a.begin()+k);}
    else if(l=="Erase"){cin>>m>>n;a.erase(a.begin()+m-1,a.begin()+n);}
    else if(l=="Print")
    {
        cin>>m>>n;
        int i;
        for(i=m-1;i<n;i++)
        {
            if(i!=n-1)
            cout<<"["<<i+1<<"]"<<":"<<a[i]<<" ";
            else
                cout<<"["<<i+1<<"]"<<":"<<a[i]<<endl;
        }
    }
    }
    return 0;
}

注:

  1. 注意题目要求:直到输入EOF结束。这一点可以直接用while(cin>>l)完成!
  2. 注意insert(a,b)和erase(a,b)操作范围都是前闭后开区间[a,b),所以在
    Insert和
    Erase语句中操作范围分别是
    a.begin()+n-1,a.begin()+k和
    a.begin()+m-1,a.begin()+n
  3. ==运算符可以进行字符串的比较,而strcmp()函数不行,如果一定要用strcmp()需要将string转换成char类型,感兴趣的同学可以自行百度!

PS:在C++中,能用string的地方尽量不要用数组。(个人观点!)

时间: 2024-08-10 14:51:03

实验7:Problem A: STL——灵活的线性表的相关文章

Problem A: STL——灵活的线性表

Description 数组和链表是我们熟知的两种线性结构,但是它们不够灵活(不能同时实现直接插入.删除和访问操作),给你若干种操作,你能通过一种灵活的容器,实现它们的功能吗? 操作1:Build a b (产生一个大小为a的线性表,其值全部赋为b,每组样例仅出现一次,在起始行) 操作2:Modify a b (将线性表的第a个元素的值设为b) 操作3:Insert a b c (在线性表的第a个位置插入第b到第c个位置的所有元素) 操作4:Erase a b(删除线性表第a到第b个位置的所有元

Problem(I) STL - 灵活的线性表

Description 数组和链表是我们熟知的两种线性结构,但是它们不够灵活(不能同时实现直接插入.删除和访问操作),给你若干种操作,你能通过一种灵活的容器,实现它们的功能吗? 操作1:Build a b (产生一个大小为a的线性表,其值全部赋为b,每组样例仅出现一次,在起始行) 操作2:Modify a b (将线性表的第a个元素的值设为b) 操作3:Insert a b c (在线性表的第a个位置插入第b到第c个位置的所有元素) 操作4:Erase a b(删除线性表第a到第b个位置的所有元

实验二:线性表的实验【物联网1132-11】

<数据结构>实验二:     线性表实验 实验目的 [巩固线性表的数据结构,学会线性表的应用.] 1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作. 2.学习运用线性表的知识来解决实际问题. 3.进一步巩固程序调试方法. 4.进一步巩固模板程序设计. 实验内容1: [顺序表]实现"建立一个N个学生成绩的顺序表,对表进行插入.删除.查找等操作,分别输出结果."代码如下: [单链表]实现"建立一个N个学生成绩的顺序表,对表进行插入.删除.查找等操作,分别输出结

Problem O: 线性表的基本操作

#include <iostream> #include <iomanip> #include <map> #include <string> #include <list> using namespace std; class MyList { public : list<int> elements; int len; int curLen; MyList(int _len):len(_len){} void append(int

实验:线性表及其应用

一.实验内容 [问题描述] 设计一个实现任意长的整数进行加法运算的演示程序 . [基本要求] 利用双向循环链表实现长整数的存储,每个结点含一个整形变量.输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开. [测试数据] (1)0:0:应输出“0”. (2)-2345,6789:-7654,3211:应输出“-1,0000,0000”. (3)-9999,9999:1,0000,0000,0000:应输出“9999,0000,0001”. (4)1,0001,0001:-1,0

Problem C: 线性表的基本操作

Description 线性表是一类重要的且基础的数据结构.请定义MyList类,来模拟针对线性表的插入.删除等操作: 1. 数据成员int *elements:线性表元素. 2. 数据成员int len:线性表容量,即线性表的最大长度. 3. 数据成员int curLen:线性表的当前容量,即当前拥有的元素个数. 4. 构造函数MyList(int _len):构造最大容量为_len的线性表. 5. void append(int d):在线性表的末尾追加元素d. 6. void insert

数据结构实验 —— 线性表

顺序表 #include<iostream> #include<stdio.h> #include<stdlib.h> //线性表动态 分配顺序存储结构 #define LIST_INIT_SIZE 100//线性表存储空间的初始分配量 #define LISTINCREMENT 10//线性表存储空间的线性增量 #define ERROR -1 //定义错误 ERROR #define OK 1 typedef int Status;//状态码 typedef int

软考之路--数据结构之线性表

数据就是数值,也就是我们通过观察.实验或计算得出的结果.数据有很多种,最简单的就是数字.数据也可以是文字.图像.声音等.数据可以用于科学研究.设计.查证等.结构,组成整体的各部分的搭配和安排,两者完美结合在一起,我们这样需要重新认识她,对她重新审视与定义:数据结构是程序设计的重要理论和技术基础,她所讨论的内容和技术,对从事软件项目的开发有重要作用,通过学习数据结构,我们学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所设计的数据悬着适当的逻辑结构.存储结构及其相应的操作方法,为提高应

数据结构笔记之线性表

线性表即链表,基本特点是除第一个元素无直接前驱,最后一个元素无直接后继之外,其他么个数据元素都有一个前驱和后继.是最基本且最常用的一种线性结构. 2.1线性表的定义和特点 由n(n>=0)个数据特性相同的元素否城的有限序列成为线性表,n为线性表长度,当n=0称空表. 举例:1.26个英文字母的字母表是一个线性表,数据元素是单个字母. 2.学生信息表中,每一个学生为一个数据元素,包括学号.姓名.性别等等数据项. 2.2案例:图书信息管理系统. 2.3线性表的类型定义 线性表是一个相当灵活的数据结构