没有 LINQ 和 SORT 的 C# 排序列表
C# Sorted list without LINQ and SORT
我的问题是,是否可以创建一个列表,根据将这些对象放入其中来对其中的对象进行排序?
一无所获后,我做了一个新的链表。唯一的任务是使此列表按它将包含的对象的字符串字段排序,同时保持可访问。
我有以下代码:
class LancoltLista<T> : IEnumerable
{
class ListaElem
{
public T tartalom;
public ListaElem kovetkezo;
}
ListaElem fej;
public void ElejereBeszuras(T elem)
{
ListaElem uj = new ListaElem();
uj.tartalom = elem;
uj.kovetkezo = fej;
fej = uj;
}
public void VegereBeszuras(T elem)
{
if (fej == null)
{
ElejereBeszuras(elem);
}
else
{
ListaElem e = fej;
while (e.kovetkezo != null)
{
e = e.kovetkezo;
}
ListaElem uj = new ListaElem();
uj.tartalom = elem;
e.kovetkezo = uj;
}
}
public IEnumerator GetEnumerator()
{
return new ListaBejaro(fej);
}
class ListaBejaro : IEnumerator<T>
{
ListaElem elso, jelenlegi;
public ListaBejaro(ListaElem elso)
{
this.elso = elso;
jelenlegi = null;
}
public bool MoveNext()
{
if (jelenlegi == null)
{
jelenlegi = elso;
}
else
{
jelenlegi = jelenlegi.kovetkezo;
}
return jelenlegi != null;
}
public void Reset()
{
jelenlegi = null;
}
object IEnumerator.Current
{
get { return this.jelenlegi.tartalom; }
}
public T Current
{
get { return this.jelenlegi.tartalom; }
}
public void Dispose()
{
elso = null;
jelenlegi = null;
}
}
}
这里的问题是我无法比较 p.kulcs 和 kulcs。
对于现实世界的应用程序,您可以使用内置的 SortedList<T>
。
对于你的家庭作业,你必须对照整个列表检查你在 add 方法中获得的每一项,并将其插入正确的位置:在大于或等于的最后一个元素与第一个元素之间元素,它更小。
当然,如果列表为空,或者没有比您添加的元素更大的元素,那么您只需将该元素追加到最后一个可用位置即可。
既然是作业,就让你自己写代码吧。
我的问题是,是否可以创建一个列表,根据将这些对象放入其中来对其中的对象进行排序?
一无所获后,我做了一个新的链表。唯一的任务是使此列表按它将包含的对象的字符串字段排序,同时保持可访问。
我有以下代码:
class LancoltLista<T> : IEnumerable
{
class ListaElem
{
public T tartalom;
public ListaElem kovetkezo;
}
ListaElem fej;
public void ElejereBeszuras(T elem)
{
ListaElem uj = new ListaElem();
uj.tartalom = elem;
uj.kovetkezo = fej;
fej = uj;
}
public void VegereBeszuras(T elem)
{
if (fej == null)
{
ElejereBeszuras(elem);
}
else
{
ListaElem e = fej;
while (e.kovetkezo != null)
{
e = e.kovetkezo;
}
ListaElem uj = new ListaElem();
uj.tartalom = elem;
e.kovetkezo = uj;
}
}
public IEnumerator GetEnumerator()
{
return new ListaBejaro(fej);
}
class ListaBejaro : IEnumerator<T>
{
ListaElem elso, jelenlegi;
public ListaBejaro(ListaElem elso)
{
this.elso = elso;
jelenlegi = null;
}
public bool MoveNext()
{
if (jelenlegi == null)
{
jelenlegi = elso;
}
else
{
jelenlegi = jelenlegi.kovetkezo;
}
return jelenlegi != null;
}
public void Reset()
{
jelenlegi = null;
}
object IEnumerator.Current
{
get { return this.jelenlegi.tartalom; }
}
public T Current
{
get { return this.jelenlegi.tartalom; }
}
public void Dispose()
{
elso = null;
jelenlegi = null;
}
}
}
这里的问题是我无法比较 p.kulcs 和 kulcs。
对于现实世界的应用程序,您可以使用内置的 SortedList<T>
。
对于你的家庭作业,你必须对照整个列表检查你在 add 方法中获得的每一项,并将其插入正确的位置:在大于或等于的最后一个元素与第一个元素之间元素,它更小。
当然,如果列表为空,或者没有比您添加的元素更大的元素,那么您只需将该元素追加到最后一个可用位置即可。
既然是作业,就让你自己写代码吧。