IEnumerator接口实现遍历泛型中的元素的问题

朝三慕四 朝三慕四 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public class SeqList<T>:IListDS<T>
{
private int maxsize;
private T[] data;
private int last;
//构造器
public SeqList(int MaxSize)
{
this.data = new T[MaxSize];
this.maxsize = MaxSize; //线性表的最大容量
this.last = -1; //指向线性表中的最后一个元素
}

//
/// <summary>
/// 清空操作
/// </summary>
public void Clear()
{
this.last = -1;
}

///删除操作
public T Delete(int i)
{
T temp = default(T);
if (IsEmpty() || i < 1 || i > last+1)
{
Console.WriteLine("无法删除,线性表为空或位置不合法");
return temp;
}

if (i == last + 1)
{
temp=data[last--];
return temp;
}
else
{
temp = data[i - 1];
for (int j = i-1; j <= last&&i<=last;i++, j++)
{
data[j]=data[i];
}
--last;
}

return default(T);

}
..............

public IEnumerator GetEnumerator()
{
//this.data
IEnumerator Ienumerator = data.GetEnumerator();

return Ienumerator;

}
/// <summary>
/// 遍历线性表中的元素
/// </summary>
public void PrintSeqList()
{
for (int i = 0; i <= last; i++)
{
if (i == 10)
Console.WriteLine();
Console.Write(data[i]+" ");
}
Console.WriteLine();
}


因为删除元素时只是将线性表中的元素移动实际并没有删除...
当我用foreach 遍历线性表中的元素并输出时,删除的元素也输出了...怎么改写public IEnumerator GetEnumerator()
使得用foreach遍历时只输出data[0]到data[last]....
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部