单链表建表和测试

using System;
using System.Collections.Generic;
using System.Text;


namespace link
{
    class Program
    {
        static void Main(string[] args)
        {
            SLinkList p = new SLinkList();
           // p.CreateListHead();  //头插法
            p.CreateListTail();    //尾插法
            p.PrintList();        //输出全部结点
            Console.WriteLine("Length={0}",p.GetLength()); //输出单链表长度            
        }
    }
    
    //********************************************//
    //链表类
    class SLinkList
    {
        private SNode start;//单链表的头引用
        int length=0;//单链表的长度

        //初始化线性表
        public SLinkList()
        {
            start = null;
        }
        
        //头插法创建单链表
        //public  void CreateListHead( )
        //{
        //    int d;
        //    d = Int32.Parse(Console.ReadLine());
        //    while (d != -1)
        //    {
        //        SNode p = new SNode(d);
        //        p.Next = start;
        //        start = p;
        //        d = Int32.Parse(Console.ReadLine());
        //    }
        //}

        //尾插法创建单链表
        public void CreateListTail()
        {
            SNode R = new SNode();
            int d;
            
            d = Int32.Parse(Console.ReadLine());
            while (d != -1)
            {
                SNode p = new SNode(d,null);
                if (start == null)
                    start = p;
                else
                    R.Next = p;
                R = p;
                d = Int32.Parse(Console.ReadLine());
            }
        }

        //输出单链表元素
        public void PrintList( )
        {
            SNode node = start;
            while (node != null)
            {
                Console.WriteLine("{0}", node.Data);
                node = node.Next;
            }
        }

        //求单链表的长度
        public int GetLength()
        {
            SNode q = start;
            while (q != null)
            {
                length++;
                q = q.Next;
            }
            return length;
        }
    }

    //*****************************************************//
    //结点类
    class SNode
    {

        private int data; //数据域
        private SNode next; //引用域
        public SNode(int val, SNode p)
        {
            data = val;
            next = p;
        }
        public SNode(SNode p)
        {
            next = p;
        }
        public SNode(int val)
        {
            data = val;
            next = null;
        }
        public SNode()
        {
            data = default(int);
            next = null;
        }
        //数据域属性
        public int Data
        {
            get
            {
                return data;
            }
            set
            {
                data = value;
            }
        }
        //引用域属性
        public SNode Next
        {
            get
            {
                return next;
            }
            set
            {
                next = value;
            }
        }
    }
}

posted @ 2010-10-12 15:35  luoxs  阅读(621)  评论(0编辑  收藏  举报