<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>
PTA02-1第一次版本C#
最新推荐文章于 2023-02-02 20:13:33 发布
这篇博客展示了如何使用C#处理链表数据结构,通过读取文件或输入数据,创建链表节点,并根据指定长度进行反转操作。代码中定义了Node类并实现了主程序中的链表反转逻辑。
摘要由CSDN通过智能技术生成