C#反转单向链表

链表是指将若干个数据项按一定的规则连接起来的表,其中的数据项成为结点。链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根 据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括 两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元 素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
本文将教你如何实现反转单向链表~

class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            //初始化链表
            LineNote startnote = new LineNote( "1" );
            LineNote note = startnote;
            for( int i = 2; i<= 5 ;i ++ )
            {
                note.Next = new LineNote( i.ToString() );
                note = note.Next;
            }
            note = startnote;
            //输出
            while ( note!=null )
            {
                System.Console.WriteLine( note.Note );
                note = note.Next;
            }
            //开始反转
            note = startnote;
            LineNote temp = note;
            while ( temp != null )
            {
                note = startnote;
                if ( temp != startnote )
                {
                    startnote = temp;
                    temp = temp.Next;
                    startnote.Next = note;
                }
                else
                {
                    temp = temp.Next;
                    note.Next= null;
                }
            }
            再次输出
            note = startnote;
            while ( note!=null )
            {
                System.Console.WriteLine( note.Note );
                note = note.Next;
            }
        }
    }

    class LineNote
    {
        public string Note;
        public LineNote Next;
        public LineNote( string note)
        {
            Note=note;
        }
    }

共有0个回答