您的位置:首页 > 编程语言 > C#

C#单向链表 实例代码

2015-08-12 15:02 519 查看
//链表类代码,主要包含新加内容,求大小,删除,插入

   public
class LinkListClass

    {

        private
string sdata;

        private
LinkListClass Head;

        private
LinkListClass next;

        

        public
LinkListClass()

        {

            Head=null;

            next=null;

        }

        

        public
void Append(string item)  //新增内容

        {

            LinkListClass p=new
LinkListClass();

            p.sdata=item;

            p.next=null;

            if(Head==null)

            {

                Head=p;

            }

            else

            {

                LinkListClass q=new
LinkListClass();

                q=Head;

            

                while(q.next!=null)

                {

                    q=q.next;

                }            

                q.next=p;    

            }

        }

        

        public
int Length()
//求链表大小

        {

            int ilen=0;

            LinkListClass p=new
LinkListClass();

            p=Head;

            while(p!=null)

            {

                ilen++;

                p=p.next;

            }

            return ilen;

        }

        

        public
void Insert(string data,int index=0)
//按位置插入内容

        {

            LinkListClass p=new
LinkListClass();            

            p.sdata=data;

            LinkListClass mybase=new
LinkListClass();

            mybase=Head;

            

            if(index==0)

            {

                Head=p;

                p.next=mybase;

            }

            else

            {        

                while(index-->0 && mybase.next!=null)

                {

                    mybase=mybase.next;

                }

                p.next=mybase.next;

                mybase.next=p;

            }            

        }

        

        public
bool Delete(int index)
// 按位置删除内容

        {

            if(this.Length()<index)

            {

                return
false;//out of range

            }

            

            if(index==0)

            {

                Head=Head.next;

                return
true;

            }

            

            LinkListClass p=new
LinkListClass();

            p=Head;    

            LinkListClass temp=new
LinkListClass();

            while(index-->0 && p.next!=null)

            {

                temp=p;

                p=p.next;

            }

            temp.next=p.next;

            return
true;

        }

        

        public
string GetValue(int index)
//按位置查找值

        {

            if(this.Length()<index)

            {

                return
"OutOfRange";

            }

            else

            {

                LinkListClass p=new
LinkListClass();

                p=Head;

                while(index-->0)

                {

                    p=p.next;

                }

                return p.sdata;

            }

        }
        public
void Clear()
// 清空链表

        {

            Head=null;

        }

    }

//使用代码示例:

    LinkListClass Mylinklist=new
LinkListClass();          

            Mylinklist.Append("c");

            Mylinklist.Append("d");        

            

            Mylinklist.Insert("E");

            Mylinklist.Insert("F",3);

            Mylinklist.Insert("H",30);         

   string buff=Mylinklist.GetValue(3);          

            Mylinklist.Delete(2);

            Mylinklist.Delete(Mylinklist.Length());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: