コード例 #1
0
        /// <summary>
        /// 删除数据节点
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t_Node"></param>
        public void RemoveNode(Func <IEventTopic, bool> t_Handler)
        {
            var t_ToList = m_SLinkedList.ToList(); //转换成System.List

            for (int i = 0; i < t_ToList.Count; i++)
            {
                if (t_Handler(t_ToList[i]))
                {
                    m_SLinkedList.RemoveAt(i);
                    return;
                }
            }
        }
コード例 #2
0
        public static void DoTest()
        {
            int index = 0;
            SLinkedList <int> listOfNumbers1 = new SLinkedList <int>();

            listOfNumbers1.Append(10);
            listOfNumbers1.Append(124);
            listOfNumbers1.Prepend(654);
            listOfNumbers1.Prepend(8);
            listOfNumbers1.Append(127485693);
            listOfNumbers1.Append(34);
            listOfNumbers1.Append(823);

            listOfNumbers1.RemoveAt(0);
            listOfNumbers1.RemoveAt(3);
            listOfNumbers1.RemoveAt(4);
            listOfNumbers1.RemoveAt(2);
            listOfNumbers1.RemoveAt(2);
            listOfNumbers1.RemoveAt(0);

            listOfNumbers1.Prepend(3);
            listOfNumbers1.Prepend(2);
            listOfNumbers1.Prepend(1);

            // Print List and Count

            listOfNumbers1.InsertAt(444, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(555, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(222, 2);

            index = (listOfNumbers1.Count - 1);

            var arrayVersion = listOfNumbers1.ToArray();

            Assert.True(arrayVersion.Length == listOfNumbers1.Count);

            /************************************************************************************/

            var listOfNumbers2 = new SLinkedList <int>();

            listOfNumbers2.Append(23);
            listOfNumbers2.Append(42);
            listOfNumbers2.Append(4);
            listOfNumbers2.Append(16);
            listOfNumbers2.Append(8);
            listOfNumbers2.Append(15);
            listOfNumbers2.Append(9);
            listOfNumbers2.Append(55);
            listOfNumbers2.Append(0);
            listOfNumbers2.Append(34);
            listOfNumbers2.Append(12);
            listOfNumbers2.Append(2);

            listOfNumbers2.SelectionSort();
            var intArray = listOfNumbers2.ToArray();

            Assert.True(intArray[0] == 0 && intArray[intArray.Length - 1] == 55, "Wrong sorting!");
        }
コード例 #3
0
        public static void DoTest()
        {
            SLinkedList <int> listOfNumbers1 = new SLinkedList <int>();

            listOfNumbers1.Append(10);
            listOfNumbers1.Append(124);
            listOfNumbers1.Prepend(654);
            listOfNumbers1.Prepend(8);
            listOfNumbers1.Append(127485693);
            listOfNumbers1.Append(34);
            listOfNumbers1.Append(824);

            listOfNumbers1.RemoveAt(0);
            listOfNumbers1.RemoveAt(3);
            listOfNumbers1.RemoveAt(4);
            listOfNumbers1.RemoveAt(2);
            listOfNumbers1.RemoveAt(2);
            listOfNumbers1.RemoveAt(0);

            listOfNumbers1.Prepend(3);
            listOfNumbers1.Prepend(2);
            listOfNumbers1.Prepend(1);

            listOfNumbers1.InsertAt(444, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(555, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(222, 2);

            var arrayVersion = listOfNumbers1.ToArray();

            Assert.True(arrayVersion.Length == listOfNumbers1.Count);

            /*******************************************************/

            var listOfNumbers2 = new SLinkedList <int>();

            listOfNumbers2.Append(23);
            listOfNumbers2.Append(42);
            listOfNumbers2.Append(4);
            listOfNumbers2.Append(16);
            listOfNumbers2.Append(8);
            listOfNumbers2.Append(15);
            listOfNumbers2.Append(9);
            listOfNumbers2.Append(55);
            listOfNumbers2.Append(0);
            listOfNumbers2.Append(34);
            listOfNumbers2.Append(12);
            listOfNumbers2.Append(2);

            listOfNumbers2.SelectionSort();
            var intArray = listOfNumbers2.ToArray();

            foreach (var item in listOfNumbers2)
            {
                Console.WriteLine(item);
            }

            Assert.True(intArray[0] == 0 && intArray[intArray.Length - 1] == 55, "Wrong sorting");
        }
コード例 #4
0
ファイル: Huffman.cs プロジェクト: Mszauer/DataStructures
        public static Node MakeHuffmanTree(HashTable<char, int> frequencyTable)
        {
            //First, create a singly linked list of nodes to return
            SLinkedList<Node> looseNodes = new SLinkedList<Node>();
            //we need to loop through the given frequency table
            SLinkedList<char> keys = frequencyTable.Keys;
            for (int i = 0; i < keys.Size; i++) {
                //make new node for each element in hash table
                Node n = new Node();
                //node Data is current key (keys[i])
                n.Data = keys[i];
                //node frequency is going to be the value for the current key (table[key])
                n.Frequency = frequencyTable[keys[i]];
                //add this new node to the end(tail) of the loose nodes list
                looseNodes.AddTail(n);
            }//end loop

            /* Comments, no code */
            // Next we need to take this loose collection of nodes and build a tree out of it.
            // We do this by combining the smallest value nodes under a parent node. Each iteration
            // Of the below loop will reduce size by 1, because it removes two nodes and adds one.
            // We know we have a tree built, when the loose nodes list has a size of 1.
            /* End comments */

            //loop while the looseNodes list has more than one element in it
            while (looseNodes.Size > 1) {
                //make local variable called left and set it to looseNodes[0]
                Node left = looseNodes[0];
                //we want to set left to the lowest frequency node, loop through nodes
                for (int i = 0; i < looseNodes.Size; i++) {
                    //if frequency of current node is less than left
                    if (left.Frequency > looseNodes[i].Frequency) {
                        //set left to current node
                        left = looseNodes[i];
                    }//end if
                }//end loop
                //now that we have a  reference to the smallest node, lets remove it from the list
                looseNodes.RemoveAt(looseNodes.IndexOf(left));
                //Repeat above steps for a new local node called right
                Node right = looseNodes[0];
                for (int i = 0; i < looseNodes.Size; i++) {
                    if (right.Frequency > looseNodes[i].Frequency) {
                        right = looseNodes[i];
                    }
                }
                looseNodes.RemoveAt(looseNodes.IndexOf(right));
                //Make a new node
                Node n = new Node();
                //set its left to the local left node
                n.Left = right;
                //set its right to the local right node
                n.Right = left;
                //set its frequency to the sum of the left and right nodes frequencies
                n.Frequency = right.Frequency + left.Frequency;
                //set its data to '\0' (char equivalent of null)
                n.Data = '\0';
                //Add the new node to the end of the looseNodes list(AddTail)
                looseNodes.AddTail(n);
            }//end loop
            //at this point the loose node list has only one element, and it's the root node of our huffman table
            //return [0] of the loose list
            return looseNodes[0];
            //end loop ?? what loop
        }
コード例 #5
0
		public static void DoTest ()
		{
			int index = 0;
			SLinkedList<int> listOfNumbers1 = new SLinkedList<int>();

			listOfNumbers1.Append(10);
			listOfNumbers1.Append(124);
			listOfNumbers1.Prepend(654);
			listOfNumbers1.Prepend(8);
			listOfNumbers1.Append(127485693);
			listOfNumbers1.Append(34);
			listOfNumbers1.Append(823);

			Console.WriteLine(listOfNumbers1.ToReadable());

			listOfNumbers1.RemoveAt(0);
			Console.WriteLine("Removed 1st:\r\n" + listOfNumbers1.ToReadable());

			listOfNumbers1.RemoveAt(3);
			listOfNumbers1.RemoveAt(4);
			Console.WriteLine("Removed 3rd & 4th:\r\n" + listOfNumbers1.ToReadable());

			listOfNumbers1.RemoveAt(2);
			Console.WriteLine("Removed 3rd:\r\n" + listOfNumbers1.ToReadable());

			listOfNumbers1.RemoveAt(2);

			Console.WriteLine("Removed 3rd:\r\n" + listOfNumbers1.ToReadable());

			listOfNumbers1.RemoveAt(0);
			Console.WriteLine("Remove 1st:\r\n" + listOfNumbers1.ToReadable());

			listOfNumbers1.Prepend(3);
			listOfNumbers1.Prepend(2);
			listOfNumbers1.Prepend(1);
			// Print List and Count
			Console.WriteLine(listOfNumbers1.ToReadable());
			Console.WriteLine("Count: " + listOfNumbers1.Count + "\r\n");

			listOfNumbers1.InsertAt(444, listOfNumbers1.Count);
			listOfNumbers1.InsertAt(555, listOfNumbers1.Count);
			listOfNumbers1.InsertAt(222, 2);
			Console.WriteLine(listOfNumbers1.ToReadable());
			Console.WriteLine("Count: " + listOfNumbers1.Count + "\r\n");

			index = 0;
			Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

			index = (listOfNumbers1.Count / 2) + 1;
			Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

			index = (listOfNumbers1.Count / 2) + 2;
			Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

			index = (listOfNumbers1.Count - 1);
			Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

			Console.WriteLine();

			Console.WriteLine("GetRange(0, 3):\r\n" + listOfNumbers1.GetRange(0, 3).ToReadable());

			var arrayVersion = listOfNumbers1.ToArray();
			Debug.Assert (arrayVersion.Length == listOfNumbers1.Count);

            /************************************************************************************/

            var listOfNumbers2 = new SLinkedList<int>();

            listOfNumbers2.Append(23);
            listOfNumbers2.Append(42);
            listOfNumbers2.Append(4);
            listOfNumbers2.Append(16);
            listOfNumbers2.Append(8);
            listOfNumbers2.Append(15);
            listOfNumbers2.Append(9);
            listOfNumbers2.Append(55);
            listOfNumbers2.Append(0);
            listOfNumbers2.Append(34);
            listOfNumbers2.Append(12);
            listOfNumbers2.Append(2);

            listOfNumbers2.SelectionSort();

            var intArray = listOfNumbers2.ToArray();

            Debug.Assert(intArray[0] == 0 && intArray[intArray.Length - 1] == 55, "Wrong sorting!");
		}
コード例 #6
0
        public static void DoTest()
        {
            int index = 0;
            SLinkedList <int> listOfNumbers1 = new SLinkedList <int>();

            listOfNumbers1.Append(10);
            listOfNumbers1.Append(124);
            listOfNumbers1.Prepend(654);
            listOfNumbers1.Prepend(8);
            listOfNumbers1.Append(127485693);
            listOfNumbers1.Append(34);
            listOfNumbers1.Append(823);

            Console.WriteLine(listOfNumbers1.ToReadable());

            listOfNumbers1.RemoveAt(0);
            Console.WriteLine("Removed 1st:\r\n" + listOfNumbers1.ToReadable());

            listOfNumbers1.RemoveAt(3);
            listOfNumbers1.RemoveAt(4);
            Console.WriteLine("Removed 3rd & 4th:\r\n" + listOfNumbers1.ToReadable());

            listOfNumbers1.RemoveAt(2);
            Console.WriteLine("Removed 3rd:\r\n" + listOfNumbers1.ToReadable());

            listOfNumbers1.RemoveAt(2);

            Console.WriteLine("Removed 3rd:\r\n" + listOfNumbers1.ToReadable());

            listOfNumbers1.RemoveAt(0);
            Console.WriteLine("Remove 1st:\r\n" + listOfNumbers1.ToReadable());

            listOfNumbers1.Prepend(3);
            listOfNumbers1.Prepend(2);
            listOfNumbers1.Prepend(1);
            // Print List and Count
            Console.WriteLine(listOfNumbers1.ToReadable());
            Console.WriteLine("Count: " + listOfNumbers1.Count + "\r\n");

            listOfNumbers1.InsertAt(444, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(555, listOfNumbers1.Count);
            listOfNumbers1.InsertAt(222, 2);
            Console.WriteLine(listOfNumbers1.ToReadable());
            Console.WriteLine("Count: " + listOfNumbers1.Count + "\r\n");

            index = 0;
            Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

            index = (listOfNumbers1.Count / 2) + 1;
            Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

            index = (listOfNumbers1.Count / 2) + 2;
            Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

            index = (listOfNumbers1.Count - 1);
            Console.WriteLine("Get At " + index + ": " + listOfNumbers1.GetAt(index));

            Console.WriteLine();

            Console.WriteLine("GetRange(0, 3):\r\n" + listOfNumbers1.GetRange(0, 3).ToReadable());

            var arrayVersion = listOfNumbers1.ToArray();

            Debug.Assert(arrayVersion.Length == listOfNumbers1.Count);

            /************************************************************************************/

            var listOfNumbers2 = new SLinkedList <int>();

            listOfNumbers2.Append(23);
            listOfNumbers2.Append(42);
            listOfNumbers2.Append(4);
            listOfNumbers2.Append(16);
            listOfNumbers2.Append(8);
            listOfNumbers2.Append(15);
            listOfNumbers2.Append(9);
            listOfNumbers2.Append(55);
            listOfNumbers2.Append(0);
            listOfNumbers2.Append(34);
            listOfNumbers2.Append(12);
            listOfNumbers2.Append(2);

            listOfNumbers2.SelectionSort();

            var intArray = listOfNumbers2.ToArray();

            Debug.Assert(intArray[0] == 0 && intArray[intArray.Length - 1] == 55, "Wrong sorting!");
        }