C#之链表使用

来源:互联网 发布:花都特大网络诈骗案 编辑:程序博客网 时间:2024/05/29 07:15
<pre name="code" class="csharp">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace test{    class Node     //结点    {        public string data;        public Node next;    }    class Program    {        public Node head=new Node();    //头结点        public bool CreateLink()   //创建链表        {            head.next = null;            //Node temp=new Node()       //位置放错            string path = @"F:\test1.txt";            try            {                StreamReader sr = new StreamReader(path, Encoding.Default);                string st;                while ((st = sr.ReadLine()) != null)                {  //将文件中的数据读入到链表中                    string[] ss = st.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);                    for (int i = 0; i < ss.Length; i++)                    {                        Node temp = new Node();  //创建临时节点  重要位置                        temp.data = ss[i];                        temp.next = head.next;                        head.next = temp;                    }                }            }            catch(Exception e)            {                Console.WriteLine(e.Data);                return false;            }            return true;        }        public int GetLength()    //获取链表head的长度        {            int length;     //长度            length = 0;            Node temp=new Node();            temp=head;            while (temp.next != null)            {                length++;                temp = temp.next;            }            return length;        }        public bool InsertNode(int position,string s)  //在位置position插入数据为s的节点        {            if (position <= 0 || position > GetLength() + 1)  //越界            {                Console.WriteLine("插入位置越界");                return false;            }            else            {                Node newNode = new Node();                newNode.data = s;                Node temp = head;                for (int i = 0; i < position; i++)                {                    if (i == position - 1)                    {                        newNode.next = temp.next;                        temp.next = newNode;                    }                    temp = temp.next;                }            }            return true;        }        public bool GetItem(int position, ref string s)  //获取位置position的元素s        {            if (position < 1 || position > GetLength())   //越界            {                Console.WriteLine("不存在此位置");                return false;            }            else            {                Node temp = new Node();                temp = head;                for (int i = 0; i < position; i++)                {                    if (i == position - 1)                    {                        s = temp.next.data;                    }                    temp = temp.next;                }            }            return true;        }        public bool deleteItem(int position)     //删除position位置的元素        {            if (position < 1 || position > GetLength())            {                Console.WriteLine("不存在此位置");            }            Node temp = new Node();            temp = head;            for (int i = 0; i < position; i++)            {                if (i == position - 1)                {                    temp.next = temp.next.next;                }                temp = temp.next;            }            return true;        }        public void OutLink()   //输出链表        {            Node temp=new Node();            temp=head;            while(temp.next!=null)            {                Console.WriteLine(temp.data);                temp = temp.next;            }        }        static void Main()        {            Program p = new Program();            if (p.CreateLink())            {                Console.WriteLine("创建成功");            }            Console.WriteLine("链长为{0}",p.GetLength());            p.OutLink();            p.InsertNode(8, "seweo");            p.OutLink();            string s="";            p.GetItem(0, ref s);            Console.WriteLine("第三个元素为{0}", s);            p.deleteItem(4);            p.OutLink();        }    }}


                                             
0 0
原创粉丝点击