从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值,空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApp5
{
class Array1
{
static void Main(string[] args)
{
//public int[] nums = new int[] {1,3,5 };
Array1 b = new Array1();
b.AddFirst(9);
b.AddFirst(7);
b.AddFirst(5);
b.AddFirst(4);
b.AddFirst(2);
b.AddFirst(8);
b.AddFirst(5);
//b.Remove();
Console.WriteLine(b);
Console.Read();
}
private int[] data;
private int N;
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] = data[i-1];
}
data[index] = e;
N++;
}
public void AddLast(int e)
{
Add(N,e);
}
public void AddFirst(int e)
{
Add(0,e);
Console.WriteLine("daidaidai");
}
public Array1(int capacity)
{
data = new int[capacity];
N = 0;
}
public Array1()
{
data = new int[10];
N = 0;
}
public int Capicity
{
get { return data.Length; }
}
public int Count
{
get { return N; }
}
public bool IsEmpty
{
get { return N == 0; }
}
//public int IndexOf(int e)
//{
// for (int i = 0; i < N; i++)
// {
// if (data[i] == e)
// return i;
// }
// return -1;
//}
public int Min()
{
int i;
int min = data[0];
for (/*int */i = 0; i < N; i++)
{
if (data[i] <= min)
{
min = data[i];
}
}
return min;
}
public int RemoveAt(int index)
{
if (index < 0 || index >= N)
throw new ArgumentException("数组索引越界");
int del = data[index];
data[index] = data[N-1];
data[N - 1] = default;
return del;
}
public void Remove()
{
int index = Min();
if (index != -1)
RemoveAt(index);
}
public override string ToString()
{
StringBuilder res = new StringBuilder();
res.Append(string.Format("Array1: count ={0} capicity{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();
}
}
}