public void ListTestRemove(int expectedCount, int[] values)
        {
            var list = new DoublyLinkedList <int>();

            foreach (var item in values)
            {
                list.AddNodeToLast(item);
            }

            Assert.Equal(expectedCount, list.Count);
            if (expectedCount > 0)
            {
                Assert.Equal(list.Head.prev, list.Tail);
                Assert.Equal(list.Tail.next, list.Head);
                Assert.NotNull(list.Head);
                Assert.NotNull(list.Tail);
                if (values.Length > 1)
                {
                    list.Remove(1);
                    Assert.Equal(values[2], list.Head.next.data);
                }
                Assert.Equal(values[0], list.Head.data);
                Assert.Equal(values[values.Length - 1], list.Tail.data);
            }
        }
예제 #2
0
        static public string CaesarCypherEncrypt(int key, string phrase, string way)
        {
            var    Encryptor       = new DoublyLinkedList <char>();
            string EncryptedPhrase = "";
            char   finalLetter     = ' ';

            for (int i = 0; i < phrase.Length; i++)
            {
                for (char currentLetter = 'a'; currentLetter <= 'z'; currentLetter++)
                {
                    if (phrase[i] == ' ')
                    {
                        Encryptor.AddNodeToLast(' ');
                        break;
                    }
                    else if (phrase[i] == currentLetter)
                    {
                        if (way == "encrypt")
                        {
                            finalLetter = currentLetter;
                            for (int j = 0; j < key; j++)
                            {
                                finalLetter++;
                            }
                            Encryptor.AddNodeToLast(finalLetter);
                        }
                        else if (way == "decrypt")
                        {
                            finalLetter = currentLetter;
                            for (int j = 0; j < key; j++)
                            {
                                finalLetter--;
                            }
                            Encryptor.AddNodeToLast(finalLetter);
                        }
                    }
                }
            }
            var runner = Encryptor.Head;

            for (int i = 0; i < Encryptor.Count; i++)
            {
                EncryptedPhrase += runner.data;
                runner           = runner.next;
            }
            return(EncryptedPhrase);
        }