using System;
using System.Collections.Generic;
using System.Text;namespace Link
{
//结构:
public struct structData
{
public string sStr;
public int iInt;
} //实现链表:
public class myLink
{
//Begin:内部类:定义链表:
public class Link
{
private structData sd;
private Link next; public Link()
{
} public Link(structData sd0)
{
next = null;
sd = sd0;
} public structData Sd
{
get
{
return sd;
}
set
{
sd = value;
}
} public Link Next
{
get
{
return next;
}
set
{
next = value;
}
}
}
//End:内部类:定义链表 private Link link; public myLink()
{
link = null;
} public Link LINK
{
get { return link; }
set { link = value; }
} //添加一个结点:
public void Add(structData sd)
{
Link l = new Link();
l.Sd = sd;
l.Next = link; //这2句是链表的核心代码
link = l;
} //输出一个结点(先进先出):
public structData Peek()
{
Link Currlink = link;
while (Currlink.Next != null)
{
Currlink = Currlink.Next;
}
structData sd = Currlink.Sd;
return sd;
} //删除首结点:
public void DeleteFirst()
{
Link Prevlink = link;
Link Currlink = link;
Currlink = Prevlink.Next;
while (Currlink.Next != null)
{
Prevlink = Currlink;
Currlink = Prevlink.Next;
}
Prevlink.Next = null;
} //迭代器:
public System.Collections.IEnumerator GetEnumerator()
{
Link lk = link;
while (lk != null)
{
yield return lk;
lk = lk.Next;
}
}
} class Program
{
static void Main(string[] args)
{
myLink lnk = new myLink();
structData sd1;
sd1.sStr = "s1";
sd1.iInt = 1;
lnk.Add(sd1); structData sd2;
sd2.sStr = "s2";
sd2.iInt = 2;
lnk.Add(sd2); structData sd3;
sd3.sStr = "s3";
sd3.iInt = 3;
lnk.Add(sd3); structData sd4;
sd4.sStr = "s4";
sd4.iInt = 4;
lnk.Add(sd4); structData sd5;
sd5.sStr = "s5";
sd5.iInt = 5;
lnk.Add(sd5); Console.WriteLine("所有数据:");
foreach (myLink.Link lk in lnk)
{
Console.Write(lk.Sd.sStr + ", ");
Console.WriteLine(lk.Sd.iInt.ToString());
} Console.WriteLine("显示队列首数据:");
structData sd01 = lnk.Peek();
Console.WriteLine(sd01.sStr);
Console.WriteLine(sd01.iInt.ToString()); Console.WriteLine("删除队列首数据后,显示队列新的首数据:");
lnk.DeleteFirst();
structData sd02 = lnk.Peek();
Console.Write(sd02.sStr + ", ");
Console.WriteLine(sd02.iInt.ToString()); Console.WriteLine("再次删除队列首数据后,显示队列新的首数据:");
lnk.DeleteFirst();
structData sd03 = lnk.Peek();
Console.Write(sd03.sStr + ", ");
Console.WriteLine(sd03.iInt.ToString());
Console.WriteLine("这时队列的所有数据:");
foreach (myLink.Link lk in lnk)
{
Console.Write(lk.Sd.sStr + ", ");
Console.WriteLine(lk.Sd.iInt.ToString());
} Console.ReadLine();
}
}
}
电脑学习网 http://www.why100000.com
张庆 2007.5.29
using System.Collections.Generic;
using System.Text;namespace Link
{
//结构:
public struct structData
{
public string sStr;
public int iInt;
} //实现链表:
public class myLink
{
//Begin:内部类:定义链表:
public class Link
{
private structData sd;
private Link next; public Link()
{
} public Link(structData sd0)
{
next = null;
sd = sd0;
} public structData Sd
{
get
{
return sd;
}
set
{
sd = value;
}
} public Link Next
{
get
{
return next;
}
set
{
next = value;
}
}
}
//End:内部类:定义链表 private Link link; public myLink()
{
link = null;
} public Link LINK
{
get { return link; }
set { link = value; }
} //添加一个结点:
public void Add(structData sd)
{
Link l = new Link();
l.Sd = sd;
l.Next = link; //这2句是链表的核心代码
link = l;
} //输出一个结点(先进先出):
public structData Peek()
{
Link Currlink = link;
while (Currlink.Next != null)
{
Currlink = Currlink.Next;
}
structData sd = Currlink.Sd;
return sd;
} //删除首结点:
public void DeleteFirst()
{
Link Prevlink = link;
Link Currlink = link;
Currlink = Prevlink.Next;
while (Currlink.Next != null)
{
Prevlink = Currlink;
Currlink = Prevlink.Next;
}
Prevlink.Next = null;
} //迭代器:
public System.Collections.IEnumerator GetEnumerator()
{
Link lk = link;
while (lk != null)
{
yield return lk;
lk = lk.Next;
}
}
} class Program
{
static void Main(string[] args)
{
myLink lnk = new myLink();
structData sd1;
sd1.sStr = "s1";
sd1.iInt = 1;
lnk.Add(sd1); structData sd2;
sd2.sStr = "s2";
sd2.iInt = 2;
lnk.Add(sd2); structData sd3;
sd3.sStr = "s3";
sd3.iInt = 3;
lnk.Add(sd3); structData sd4;
sd4.sStr = "s4";
sd4.iInt = 4;
lnk.Add(sd4); structData sd5;
sd5.sStr = "s5";
sd5.iInt = 5;
lnk.Add(sd5); Console.WriteLine("所有数据:");
foreach (myLink.Link lk in lnk)
{
Console.Write(lk.Sd.sStr + ", ");
Console.WriteLine(lk.Sd.iInt.ToString());
} Console.WriteLine("显示队列首数据:");
structData sd01 = lnk.Peek();
Console.WriteLine(sd01.sStr);
Console.WriteLine(sd01.iInt.ToString()); Console.WriteLine("删除队列首数据后,显示队列新的首数据:");
lnk.DeleteFirst();
structData sd02 = lnk.Peek();
Console.Write(sd02.sStr + ", ");
Console.WriteLine(sd02.iInt.ToString()); Console.WriteLine("再次删除队列首数据后,显示队列新的首数据:");
lnk.DeleteFirst();
structData sd03 = lnk.Peek();
Console.Write(sd03.sStr + ", ");
Console.WriteLine(sd03.iInt.ToString());
Console.WriteLine("这时队列的所有数据:");
foreach (myLink.Link lk in lnk)
{
Console.Write(lk.Sd.sStr + ", ");
Console.WriteLine(lk.Sd.iInt.ToString());
} Console.ReadLine();
}
}
}
电脑学习网 http://www.why100000.com
张庆 2007.5.29
我假设如果 C# 没有这个这个 Queue,咱们自己给她加一个。