using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication18
{
class container
{
private animal[] a;
private int num;
private int num1;
public container(int x)
{
num1 = 0;
num = x;
a = new animal[x];
}
public animal this[int index]
{
get
{
return a[index];
}
set
{
num1++;
a[index] = value;
}
}
public void println()
{
for (int i = 0; i < num1; i++)
{
a[i].print();
}
}
public void delete()
{
Console.WriteLine("\n请输入你要删除的元素个数!");
int m= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\n请输入你要删除的元素的下标!");
for (int i = 0; i < m; i++)
{
int k= Convert.ToInt32(Console.ReadLine());
for (int j = 0; j < num1; j++)
{
if (j == k)
a[j] = null;
else
a[j].print();
}
}
}
}
abstract class animal
{
abstract public void print();
}
class tiger : animal
{
public override void print()
{
Console.Write("Tiger\t");
}
}
class horse : animal
{
public override void print()
{
Console.Write("Horse\t");
}
}
class duck : animal
{
public override void print()
{
Console.Write("Duck\t");
}
}
class pig : animal
{
public override void print()
{
Console.Write("Pig\t");
}
}
class sheep : animal
{
public override void print()
{
Console.Write("Sheep\t");
}
}
class Program
{
static void Main(String[] args)
{
container c = new container(5);
tiger t = new tiger();
horse h = new horse();
duck d = new duck();
pig p = new pig();
sheep s = new sheep();
c[0] = t;
c[1] = h;
c[2] = d;
c[3] = p;
c[4] = s;
c.println();
c.delete();
Console.ReadLine();
}
}
}
{
int k= Convert.ToInt32(Console.ReadLine());
for (int j = 0; j < num1; j++)
{
if (j == k)
a[j] = null;
else if(a[j]!=null)//已经被删的就不能再取值
a[j].print();
}
}
很多知识点都是有共性的,研究这些算法也是有好处的!问下:为什么你说数组没有什么实际用处了?
追答数组的算法,是以前程序开发中的亮点,但是随着数据库技术的发展,这些算法都被新的数据库技术代替了,思想也不一样了,甚至说没共性了,研究数组容易阻碍你的视线。
实际程序开发中已经用不到数组的计算了,无论从效率还是算法,都不如数据库了。
谢谢你的回答!再问一下:是不是你说的“数据库技术替代”是指:数组的算法很多是不需要人为的实现,就像面向对象语言相对于面向过程语言,很多具体的算法不需要写,直接调用封装好的函数,是这个意思么?
追答是的,比如说最大值,比如说数组的排序冒泡算法,用到数据库的话,就是简单的一句
select max(*) 最大值,order by 时间-按时间排序...结构和思路都变了。
以前数组的主要思想是在程序结构化开发的阶段,20年前的技术,早过时了。