IEnumerator接口实现遍历泛型中的元素的问题
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]....
...全文
相关推荐
Net面向对象程序设计枚举集合PPT教案学习.pptx
通过掌握IEnumerator和IEnumerable接口,以及泛型枚举器的使用,开发者能够更好地控制数据遍历的过程,优化程序性能,并确保代码的正确性。
C程序设计资料全集PPT学习教案.pptx
泛型集合确保了类型安全,提高了代码的可读性和效率。3. 集合接口: - IEnumerable接口:它是大部分集合类的基础,提供了遍历集合的能力。
C#关于System.Collections空间详解
由于它不是泛型的,因此在存储和检索元素时可能需要进行类型转换,这可能导致性能损失和潜在的类型安全问题。2.
C#MSDN Sample
例如,List<T>有一个Sort方法可以对元素进行排序,而IEnumerator接口的实现允许我们按顺序遍历集合。5.
用C#编写数据结构,以前都是用C和C++
- **枚举器和迭代器**:通过IEnumerator和IEnumerable接口,可以方便地遍历集合中的元素。


