题目的链接地址为:
http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1004
题目为:
线性表操作
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:1610 测试通过:340
描述
线性表是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
提示
该题属于南京邮电大学《数据结构A》实验一中的内容,验证的是课本代码,请慎重解答。
题目来源
CHENZ
很明显,输入的三组数据的数据类型都不同,我们不可能为此而开三个数组,因为除了数据类型不同外,对于数据的转置和移除数据的大量代码是一样的,大量重复的代码会导致程序显得非常糟糕。
这就需要用到C++中的模板,通过定义模板来处理数据类型不同的问题。
模板在需要用的类或者方法之前表明template<class T,int num>。这样程序就可以根据传入的数据的类型来进行不同的处理,而代码只需一份即可。
代码非常简单:
#include<iostream>
#define MAXNUM 1001
using namespace std;
int n,i,j;
template<class T,int num>
class myclass{
public:
T arr[num];
void traverse(T arr[])
{
for(int i=n-1;i>=0;i--)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
void remove(T arr[],T a)
{
for(int i=n-1;i>=0;i--)
{
if(arr[i]!=a)
{
cout<<arr[i]<<" ";
}
}
cout<<endl;
}
};
template<class T>
void f(myclass<T,MAXNUM> myClass)
{
for(j=0;j<n;j++)
{
cin>>myClass.arr[j];
}
T removenum;
cin>>removenum;
myClass.traverse(myClass.arr);
myClass.remove(myClass.arr,removenum);
}
int main(){
for(i=0;i<3;i++)
{
cin>>n;
if(i==0)
{
myclass<int,MAXNUM> myClass;
f(myClass);
}
else if(i==1)
{
myclass<char,MAXNUM> myClass;
f(myClass);
}
else if(i==2)
{
myclass<float,MAXNUM> myClass;
f(myClass);
}
}
system("pause");
return 0;
}
分享到:
相关推荐
本资源包含的"线性表操作全实现源代码"是针对这一数据结构的C++实现,特别利用了C++的引用特性。 首先,我们来理解一下C++中的引用。引用不是一个新的数据类型,而是已存在对象的别名,一旦引用被初始化指向某个...
以下是对给定文件中涉及的线性表操作的详细解释: 1. **初始化线性表**: `initList` 函数用于初始化一个空的线性表。它动态地分配内存,为线性表预留一定数量的空间(例如,100 个整数)。如果内存分配失败,程序...
本压缩包中的"线性表插入"文件很可能是包含了一些关于线性表操作的C语言源代码,特别是针对线性表插入操作的实现。 1. **线性表的定义**:线性表是一种线性结构,每个元素只有一个直接前驱和一个直接后继,除了第一...
本资源提供了线性表操作的C语言实现,包括源代码和可执行文件,以及一个简单的说明文档。 1. **线性表**: 线性表是由n(n≥0)个相同类型元素构成的有限序列,可以顺序存储或链式存储。顺序存储的线性表通常用数组...
在这个"有关线性表操作的C++程序"中,我们重点讨论如何通过类模板定义以及类函数来实现线性表的操作。 首先,类模板是C++中用于创建泛型类的关键工具。它允许我们定义一个通用的类,可以应用于任何数据类型。在实现...
数据结构线性表操作 数据结构是计算机科学中的一门基础学科,它研究的是计算机存储、处理和传输数据的方式和方法。在数据结构中,线性表是最基本和最常用的数据结构之一,本文将对数据结构线性表操作进行详细的分析...
### 线性表操作(链式结构) #### 概述 本文档主要介绍了一种基于C++语言实现的线性表(链式结构)的基本操作。线性表是数据结构中最基本的一种线性结构,它由一组相同类型的数据元素组成,并且数据元素之间存在一...
在实现线性表操作时,我们还需要关注以下几点: - 空表处理:设计线性表时要考虑空表的情况,通常用特殊值或指针表示空表。 - 空间效率与时间效率:顺序表在插入和删除操作时可能需要大量移动元素,效率较低,但...
### 数据结构课程设计——线性表操作 #### 实验背景与目标 本次实验旨在通过实践加深学生对于数据结构中线性表的理解,并掌握线性表的基本操作方法。实验选取了线性表作为研究对象,主要考察学生对于顺序存储结构...
在“线性表操作.txt”文件中,可能包含实现这些操作的C++代码示例,包括定义链表节点结构、定义链表操作函数以及遍历器类的定义和实现。通过阅读和理解这些代码,你可以深入理解线性表操作和链表遍历器的工作原理,...
实验报告涉及的知识点主要集中在数据结构中的线性表操作,特别是顺序存储的线性表,以及C++编程实践。以下是对这些知识点的详细说明: 1. **线性表的逻辑结构与物理结构**: - **逻辑结构**:线性表是一种抽象的...
根据给定的文件信息,我们可以总结出一系列关于线性表操作的数据结构知识点,特别是针对单链表的操作。在计算机科学中,线性表是数据结构的一种基本类型,它由一系列元素组成,这些元素按照特定顺序排列。单链表是一...
初始化线性表 *\n"; cout* 2.删除线性表中所有元素 *\n"; cout* 3.得到线性表的长度 *\n"; cout* 4.检查线性表是否为空 *\n"; cout* 5.得到线性表中指定序号元素 *\n"; cout* 6.遍历一个线性表 *\n"; cout* 7....
顺序结构的线性表操作.ppt
这个是关于数据结构中对线性表的操作,包括对线性表进行插入删除,栈的操作等,能运行
带头结点的单链表结构实现线性表操作.cpp
数据结构实验一线性表的基本操作 一、线性表的概念和类型 线性表是一种基本的数据结构,它是一种由零个或多个元素组成的有限序列,每个元素都是数据类型的实例。线性表可以分为两种类型:顺序存储结构和链式存储...
在头文件中定义了线性表的数据结构和常量,实现文件包含了对线性表操作的函数实现,而主文件则是执行这些操作的地方。 在主文件中,可以创建一个线性表对象,然后调用初始化函数,接着进行元素的插入、查找和删除...
线性表的操作通常包括添加元素、删除元素、查找元素等。 顺序存储的线性表是最简单的数据结构之一,它将元素存储在一个连续的内存空间中。例如,给定的代码段展示了如何在顺序存储的线性表中进行插入和删除操作。`...