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(int p, int d):在线性表的第p个位置(0<=p<curLen)插入元素d。
7. void erase(int p):删除线性表的第p个位置(0<=p<curLen)上的元素。
8. void set(int p, int d):设置线性表的第p个位置(0<=p<curLen)元素为d。
9. void show():显示当前线性表的所有元素。输出时,两两之间用一个空格隔开,首尾不能有空格。
上述“p”是指下标,从0开始计算。
Input
第1行的整数N>0,表示线性表的最大容量。
第2行的整数M>0,表示之后有M个操作。
每个操作的类型用字母A、I、E、S分别表示追加、插入、擦除和设置。
如果操作是A,则之后输入追加的元素值。
如果操作是I,则之后输入插入的位置及元素值。
如果操作是E,则之后输入擦除的位置。
如果操作是S,则之后输入设置的位置及元素值。
所有输入均在针对线性表的合法操作范围内。
Output
每次操作后,输出线性表的所有元素。
Sample Input
10 10 A 1 A 2 A 3 A 4 A 5 A 6 A 7 I 3 10 E 6 S 1 15
Sample Output
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 10 4 5 6 7 1 2 3 10 4 5 7 1 15 3 10 4 5 7
HINT
不能使用vector、set等容器。
#include <iostream>
#include <list>
using namespace std;
class MyList
{
public:
list<int> s;
int len;
MyList(int n){ len=n;}
void append(int d)
{
s.push_back(d);
}
void insert(int p, int d)
{
list<int>::iterator it=s.begin();
for(int i=0;i<p;i++)
++it;
s.insert(it,d);
}
void erase(int p)
{
list<int>::iterator it=s.begin();
for(int i=0;i<p;i++)
++it;
s.erase(it);
}
void set(int p, int d)
{
list<int>::iterator it=s.begin();
for(int i=0;i<p;i++)
++it;
*it=d;
}
void show()
{
list<int>::iterator it=s.begin();
for(it=s.begin();it!=s.end();it++)
{
if(it==s.begin())
cout<<*it;
else
cout<<" "<<*it;
}
cout<<endl;
}
~MyList()
{
}
};
int main()
{
int cases, len, data, pos;
char op;
cin>>len;
MyList myList(len);
cin>>cases;
for (int i = 0; i < cases; i++)
{
cin>>op;
switch (op)
{
case 'A':
cin>>data;
myList.append(data);
break;
case 'I':
cin>>pos>>data;
myList.insert(pos, data);
break;
case 'E':
cin>>pos;
myList.erase(pos);
break;
case 'S':
cin>>pos>>data;
myList.set(pos, data);
}
myList.show();
}
return 0;
}
Problem C: 线性表的基本操作的更多相关文章
- 线性表的基本操作(C语言实现)
文章目录 这里使用的工具是DEV C++ 可以借鉴一下 实现效果 顺序存储代码实现 链式存储存储实现 这里使用的工具是DEV C++ 可以借鉴一下 一.实训名称 线性表的基本操作 二.实训目的 1.掌 ...
- 浅谈c语言的线性表的基本操作———基于严蔚敏的数据结构(c语言版)
主要讲的是线性表的创建,插入及删除: 0. 线性表的建立,对于这类操作主要是利用了结构体的性质,对于定义的线性表的特性主要有三点:首先 Typedef struct { ElemType *ele ...
- 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】
本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...
- 线性表的Java实现
一.概念 对于常用的数据结构,可分为线性结构和非线性结构,线性结构主要是线性表,非线性结构主要是数和图.当n>0时,表可表示为:(a0,a1,a2,a3,…an) 1. 线性表的特征: 1.存在 ...
- 数据结构与算法(C/C++版)【绪论/线性表】
声明:数据结构与算法系列博文参考了<天勤高分笔记>.<王道复习指导>.C语言中文网.非商业用途,仅为学习笔记总结! 第一章<绪论> 一.基本概念及入门常识 /// ...
- C 线性表的链式存储实现及插入、删除等操作示例
一.链式存储的优势 线性表的存储可以通过顺序存储或链式存储实现,其中顺序存储基于数组实现(见本人上一篇博客),在进行插入删除等操作时,需对表内某一部分元素逐个移动,效率较低.而链式结构不依赖于地址连续 ...
- C 线性表的顺序存储实现及插入、删除等操作示例
一.线性表的定义 线性表(Linear List)是由同一类型元素构成的有序序列的线性结构.线性表中元素的个数称为线性表的长度:线性表内没有元素(长度为0)时,称为空表:表的起始位置称为表头,表的结束 ...
- JAVA实现具有迭代器的线性表(顺序表)
1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator&l ...
- 【C#数据结构系列】线性表
一:线性表 1.1:定义:零个或多个数据元素的有限序列 1.2: 线性表元素个数n定义为线性表的长度,n = 0称为空表,i 为数据元素ai在线性表中的位序. 1.3:满足线性表的条件:(1):有序, ...
随机推荐
- Nginx学习——Nginx简单介绍和Linux环境下的安装
一:Nginx的简介 百科百科:Nginx Nginx 是一个俄罗斯的哥们开发的,并将其进行了开源. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器, ...
- Linux入门之常用命令(12)用户管理
[用户管理] linux如何查看所有的用户和组信息的方法: 1.cat /etc/passwd: 2.cat /etc/group 1. useradd useradd 命令可以创建一个新的用户帐号, ...
- Postgresql在线备份和恢复
1.实验环境 OS: RedHat Linux Enterprisedb 6.3 DB: postgresql 9.3 PGHOME: /opt/PostgreSQL/9.3 PGDATA: /opt ...
- Android UI 笔记
EditText中添加小图标 <TextView android:layout_width="wrap_content" android:layout_height=&quo ...
- FPGA与安防领域
安防主要包括:闭路监控系统.防盗报警系统.楼宇对讲系统.停车厂管理系统.小区一卡通系统.红外周界报警系统.电子围栏.巡更系统.考勤门禁系统.安防机房系统.电子考场系统.智能门锁等等. 在监控系统中,F ...
- Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)
下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...
- Object类—复写equals方法,hashCode方法,toString方法
Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object { private int age; Person( ...
- 从零开始搭建框架SSM+Redis+Mysql(一)之摘要
从零开始搭建框架SSM+Redis+Mysql(一)之摘要 本文章为本人实际的操作后的回忆笔记,如果有步骤错漏,希望来信307793969@qq.com或者评论指出. 本文章只体现过程,仅体现操作流程 ...
- Extjs6(四)——侧边栏导航根据路由跳转页面
本文基于ext-6.0.0 之前做的时候这个侧边栏导航是通过tab切换来切换页面的,但是总感觉不太对劲,现在终于发现怎么通过路由跳转了,分享给大家,可能有些不完善的地方,望大家读后可以给些指点.欢迎留 ...
- win10 uwp iot
这篇文章主要译: https://msdn.microsoft.com/magazine/mt694090 有很多都是胡说,随便喷,但我不会理. https://blogs.msdn.microsof ...