用 C# 实现的一个队列源代码

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值