using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApp1
{
class Array1
{
static void Main(string[] args)
{
//int[] arr = new int[10];
//for (int i = 0; i < 10; i++)
//{
// arr[i] = i;
// Console.Write(arr[i] + " ");
//}
//Console.ReadLine();
//ArrayList a = new ArrayList(10);
//for (int i = 0; i < 15; i++)
//{
// a.Add(i);
// Console.WriteLine(a[i] + " ");
//}
//Console.Read();
Array1 b = new Array1(20);
for (int j = 0; j < 10; j++)
{
b.AddLast(j);
}
b.AddFirst(66);
b.Add(2, 5);
b.Remove(2);
Console.WriteLine(b);
Console.Read();
}
//
private int[] data;
private int N;
public Array1(int capacity)
{
data = new int[capacity];
N = 0;
}
//public Array1() : this(10);
public Array1()
{
data = new int[10];
N = 0;
}
public int Capacity
{
get { return data.Length; }
}
public int Count
{
get { return N; }
}
public bool IsEmpty
{
get { return N == 0; }
}
public void Add(int index, int e)
{
if (index < 0 || index > N)
throw new ArgumentException("数组索引越界");
if (N == data.Length)
throw new ArgumentException("数组已满");
for (int i = N - 1; i >= index; i--)
data[i + 1] = data[i];
data[index] = e;
N++;
}
public void AddLast(int e)
{
Add(N, e);
}
public void AddFirst(int e)
{
Add(0, e);
}
public override string ToString()
{
StringBuilder res = new StringBuilder();
res.Append(string.Format("Array1: count={0} capacity{1}\n", N, data.Length));
res.Append("[");
for (int i = 0; i < N; i++)
{
res.Append(data[i]);
if (i != N - 1)
res.Append("。");
}
res.Append("]");
return res.ToString();
}
public bool Contains(int e)
{
for (int i = 0; i < N; i++)
{
if (data[i] == e)
return true;
}
return false;
}
public int RemoveAt(int index)
{
if (index < 0 || index >= N)
throw new ArgumentException("数组索引越界");
int del = data[index];
for (int i = index + 1; i < N - 1; i++)
data[i - 1] = data[i];
N--;
data[N] = default(int);
if (N == data.Length / 4)
ResetCapacity(data.Length / 2);
return del;
}
public int RemoveFirst()
{
return RemoveAt(0);
}
public void Set(int index,int newE)
{
if (index < 0 || index >= N)
throw new ArgumentException("数组索引越界");
data[index] = newE;
}
public int RemoveLast()
{
return RemoveAt(N - 1);
}
public int IndexOf(int e)
{
for (int i = 0; i < N; i++)
{
if (data[i] == e)
return i;
}
return -1;
}
public void Remove(int e)
{
int index = IndexOf(e);
if (index != -1)
RemoveAt(index);
}
public void ResetCapacity(int newCapacity)
{
int[] newData = new int[newCapacity];
for (int i = 0; i < N; i++)
newData[i] = data[i];
data = newData;
}
}
}
09-05
2347
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交