ACM 线性表操作

来源:互联网 发布:js 非严格模式 编辑:程序博客网 时间:2024/05/16 17:56

线性表操作

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

描述

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

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

输入

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

每一组第一行给出元素数目n0<n1000),第二行给出元素数值,第三行给出待删除的元素。

输出

三组数据,每一组第一行为逆置后的顺序表元素,第二行是在此基础上删除指定元素后的顺序表元素

样例输入

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++ 模板类


#include<iostream>using namespace std;int lenA,lenB,lenC;int delA;char delB;float delC;template<class T>void Input(T *array, int num) // input {     for(int i=0;i<num;i++)     {         cin>>array[i];     } }template<class T>void Output(T *array, int num) // Output{     for (int i=num-1;i>-1;i--)     {         cout<<array[i]<<" ";     }     cout<<endl; }template <class T>int Del(T *array,int num,T key) // delete{int k=0;for (int i = 0; i < num; i++) {if (array[i] != key) {array[k++] = array[i];}}num = k;return num;}int main(){int *arrA;     cin>>lenA;    arrA = (int *) malloc(sizeof(int *)*lenA);     Input(arrA,lenA);    cin>>delA;Output(arrA,lenA);lenA=Del(arrA,lenA,delA);Output(arrA,lenA);//char *arrB;cin>>lenB;arrB = (char *) malloc(sizeof(char *)*lenB); Input(arrB,lenB);    cin>>delB;Output(arrB,lenB);lenB=Del(arrB,lenB,delB);Output(arrB,lenB);//float *arrC;cin>>lenC;arrC = new float [lenC];  Input(arrC,lenC);cin>>delC;Output(arrC,lenC);lenC=Del(arrC,lenC,delC);Output(arrC,lenC);}

Java


import java.util.*;class Slist {Object[] datas;int length;}public class Main {/* * delete */public static void del(Slist slist, Object key) {int k = 0;for (int i = 0; i < slist.length; i++) {if (slist.datas[i].equals(key) == false) {slist.datas[k++] = slist.datas[i];}}slist.length = k;}/* * print */public static void print(Slist slist) {for (int i = 0; i < slist.length; i++) {System.out.print(slist.datas[i] + " ");}System.out.println();}/* * reverse */public static void reverse(Slist slist) {Object tmp;for (int i = 0; i < slist.length / 2; i++) {tmp = slist.datas[i];slist.datas[i] = slist.datas[slist.length - i - 1];slist.datas[slist.length - i - 1] = tmp;}}/* * main */public static void main(String[] args) {Slist slist = new Slist();Scanner cin = new Scanner(System.in);/* * intArrray */slist.length = cin.nextInt();slist.datas = new Object[slist.length];for (int i = 0; i < slist.length; i++)slist.datas[i] = cin.nextInt();int delKey = cin.nextInt();reverse(slist);print(slist);del(slist, delKey);print(slist);/* * charArray */slist.length = cin.nextInt();slist.datas = new Object[slist.length];String useless = cin.nextLine();String tmp = cin.nextLine();int xiabiao = 0;for (int i = 0; xiabiao < slist.length; i = i + 2) {slist.datas[xiabiao] = tmp.charAt(i);xiabiao++;}char delKey1 = cin.nextLine().charAt(0);reverse(slist);print(slist);del(slist, delKey1);print(slist);/* * floatArray */slist.length = cin.nextInt();slist.datas = new Object[slist.length];for (int i = 0; i < slist.length; i++)slist.datas[i] = cin.nextFloat();float delKey11 = cin.nextFloat();reverse(slist);print(slist);del(slist, delKey11);print(slist);}}


0 0
原创粉丝点击