public void CircularQueue_push_cmp() { CircularQueue<int> x = new CircularQueue<int>(3); x.push(10); Assert.IsTrue(x.cmp(new[] { 10 })); x.push(15); Assert.IsTrue(x.cmp(new[] { 10, 15})); x.push(20); Assert.IsTrue(x.cmp(new[] { 10, 15, 20 })); x.push(25); Assert.IsTrue(x.cmp(new[] { 15, 20, 25 })); }
/// <summary> /// Поиск подпоследовательности в потоке данных /// </summary> /// <remarks> /// Простейший вариант алгоритма Бойера — Мура /// </remarks> /// <param name="file">Поток данных</param> /// <param name="template">Подпоследовательность</param> /// <returns>true - если найдена</returns> public static bool searchInFile(Stream file, IList<byte> template) { // incorrect input if (file == null || template == null || template.Count == 0) return false; CircularQueue<byte> buff = new CircularQueue<byte>(template.Count); for (int t = file.ReadByte(); t != -1; t = file.ReadByte()) { buff.push((byte)t); if (template.Last().Equals((byte)t)) { if (buff.cmp(template)) return true; } } return false; }