-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin3!goblin1!goblin.stu.neva.ru!feed.xsnews.nl!fbe001.ams.xsnews.nl
!peer03.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neos
trada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Content-Type: text/plain; charset=iso-8859-2; format=flowed; delsp=yes
Newsgroups: pl.comp.programming
Subject: Re: Jak przeszukiwać drzewo z przerwami ?
References: <nf6stq$qmg$1@node2.news.atman.pl>
Date: Wed, 20 Apr 2016 06:03:02 +0200
MIME-Version: 1.0
Content-Transfer-Encoding: Quoted-Printable
From: "Jordan Szubert" <u...@j...us.to>
Organization: HELL inc.
Message-ID: <o...@a...mshome.net>
User-Agent: Opera Mail/1.0 (Win32)
Lines: 77
NNTP-Posting-Host: 83.22.51.203
X-Trace: 1461124983 unt-rea-a-02.news.neostrada.pl 22841 83.22.51.203:48623
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 2898
X-Received-Body-CRC: 2800204564
Xref: news-archive.icm.edu.pl pl.comp.programming:209318
[ ukryj nagłówki ]Dnia 20-04-2016 o 05:26:49 Borneq <b...@a...hidden.pl> napisał(a):
> Większość operacji na drzewie robi się rekurencyjnie. Tak jak na
> przykład wypisanie wszystkich znalezionych ciągów.
> Wypisz(root) woła Wypisz(1), Wypisz(2)...
> Ale teraz chcę zrobić coś takiego:
> Control+F ma znaleźć pierwsze wystąpienie ciągu, (np. przeszukiwanie w
> rejestrach lub jakimkolwiek innym drzewie z danymi) i stanąć na
> znalezionym węźle, niezależnie jak zagłębiony.
> Naciskając F3 zaczynamy od tego węzła i dalej szukamy.
> Chyba trzeba zrobić sztuczny stos na liście (wektorze, chodzi mi ogólnie
> C++, a zwłaszcza teraz o C#) zamiast rekurencji.
> Jak to wykonać? W C#
w C# kompilator zrobi za ciebie sporo roboty:
public class Node : IEnumerable<Node> {
public string Name;
public List<Node> Children = new List<Node>();
public IEnumerator<Node> GetEnumerator() {
yield return this;
foreach(var c in Children) {
foreach(var e in c) {
yield return e;
}
}
}
System.Collections.IEnumerator
System.Collections.IEnumerable.GetEnumerator() {
return this.GetEnumerator();
}
}
IEnumerator<Node> lastSearch = null;
Node ControlF(Node root, string needle) {
{
var td = lastSearch as IDisposable;
if(td != null) {
td.Dispose();
}
}
lastSearch = root.Where(n => n.Name == needle).GetEnumerator();
if(lastSearch.MoveNext()) {
//has at least one result
return lastSearch.Current;
} else {
//nothing found
return null;
}
}
Node F3() {
if(lastSearch == null) {
return null;
}
if(!lastSearch.MoveNext()) {
//no more results
return null;
} else {
return lastSearch.Current;
}
}
//nie testowalem, moga byc bledy
--
Jordan Szubert
skype:jordanszubert
Następne wpisy z tego wątku
- 20.04.16 16:08 Borneq
- 20.04.16 16:36 Borneq
- 20.04.16 17:00 Borneq
- 20.04.16 18:37 Jordan Szubert
- 21.04.16 05:41 Borneq
Najnowsze wątki z tej grupy
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-18 celnicy pobili policjanta
- 2025-07-18 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-18 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=
- 2025-07-18 Białystok => Kotlin Developer <=
- 2025-07-18 Warszawa => Sales Director (Cloud solutions) <=
- 2025-07-18 Spalinowa trauma
- 2025-07-18 Polska => Senior Key Account Manager <=
- 2025-07-18 Białystok => Programista Kotlin <=
- 2025-07-18 Szczecin => Key Account Manager IT <=
- 2025-07-18 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-18 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-18 Lublin => Delphi Programmer <=
- 2025-07-18 Lublin => Programista Delphi <=
- 2025-07-17 Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 2025-07-17 Andrzej Duda ułaskawił Roberta Bąkiewicza od zarzutu zapchnięcia ze schodów aktywistki Babci Kasi