PTA02-1第一次版本C#

来源:互联网 发布:g92车直螺纹编程实例 编辑:程序博客网 时间:2024/06/05 09:46
<ol><li><span style="font-family: Arial, Helvetica, sans-serif;">using System;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">using System.Collections.Generic;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">using System.Linq;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">using System.Text;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">using System.Threading.Tasks;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">using System.IO;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">namespace MyReverLinkedList</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">{</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    class Program</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        static void Main(string[] args)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            List<Node<string, string>> list = new List<Node<string, string>>();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            List<Node<string, string>> listAddress = new List<Node<string, string>>();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string input = acceptmultiLineChars2();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string[] inputs = input.Replace("\r\n\r", "\r").Replace("\r\n\n", "").Split('\r');</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            //string input = File.ReadAllText("1.txt");</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            //string[] inputs = input.Replace("\r\n", "\r").Split('\r');</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            </span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            int x = inputs.Count();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string[] aa =inputs[0].Split(' ');</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string headAddress = aa[0];</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            int reverseLength = int.Parse(aa[2]);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string[,] inputLinesValue = new string[x, 3];</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            for (int i = 1; i < x; i++)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                string[] inputLines = inputs[i].Split(' ');</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                int y = inputLines.Count();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                for (int m = 0; m < y; m++)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    {  </span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    inputLinesValue[i,m] = inputLines[m];</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                Node<string, string> n = new Node<string, string>(inputLinesValue[i,1],inputLinesValue[i,0],inputLinesValue[i,2]);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                list.Add(n);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            do</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                foreach (Node<string, string> item in list)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    if (item.CurrentAddress == headAddress)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                        listAddress.Add(item);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                        headAddress = item.NextAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            } while (listAddress.Count() < list.Count());</span></li><li></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            //ReverList(listAddress, reverseLength);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            foreach (var item in listAddress)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                Console.WriteLine(item.CurrentAddress + " " + item.Data + " " + item.NextAddress);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">           //Console.Read();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        private static void ReverList(List<Node<string, string>> listAddress, int reverseLength)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            int laCount = listAddress.Count();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            int revCount = laCount / reverseLength;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            for (int revLen = 0; revLen < revCount; revLen++)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                listAddress.Reverse(revLen * revCount, reverseLength);</span></li><li></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            for (int i = 0; i < laCount; i++)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                int lastIndex = -1;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                string lastNextAddress = lastIndex.ToString();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                listAddress[laCount - 1].NextAddress = lastNextAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                if (listAddress[i].NextAddress != lastNextAddress)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    listAddress[i].NextAddress = listAddress[i + 1].CurrentAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        static string acceptmultiLineChars2()</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            ConsoleKeyInfo cki;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            //Console.TreatControlCAsInput = true;//防止Ctrl+C复制</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            Console.WriteLine("Press the CTRL+Enter key to quit: \n");</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            string result = string.Empty;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            do</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                cki = Console.ReadKey();</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                if (cki.Key == ConsoleKey.Enter)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    result += System.Environment.NewLine;//如果输入回车,则加入换行标志</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                    Console.SetCursorPosition(0, Console.CursorTop + 1);//光标下移一行</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">                result += cki.KeyChar;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            } while (cki.Key != ConsoleKey.Enter || (cki.Modifiers & ConsoleModifiers.Control) == 0);//按Ctrl+Enter退出</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            return result;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    class Node<T, K></span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        K currentAddrss;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        K nextAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        T data;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        Node<T, K> next;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        public Node()</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            currentAddrss = default(K);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            nextAddress = default(K);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            data = default(T);</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            next = null;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        public Node(T value, K currentAddress, K nextAddress)</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            this.data = value;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            this.currentAddrss = currentAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            this.nextAddress = nextAddress;</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        public T Data</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            get { return data; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            set { data = value; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        public K CurrentAddress</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            get { return currentAddrss; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            set { currentAddrss = value; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        public K NextAddress</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        {</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            get { return nextAddress; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">            set { nextAddress = value; }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">        }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">    }</span></li><li><span style="font-family: Arial, Helvetica, sans-serif;">}</span></li></ol>
0 0
原创粉丝点击