-
X-Received: by 10.31.161.197 with SMTP id k188mr211830vke.8.1521206762534; Fri, 16
Mar 2018 06:26:02 -0700 (PDT)
X-Received: by 10.31.161.197 with SMTP id k188mr211830vke.8.1521206762534; Fri, 16
Mar 2018 06:26:02 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!go
blin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.gig
anews.com!r16no467947qtn.1!news-out.google.com!c39ni832qta.0!nntp.google.com!j2
3no52151qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-ma
il
Newsgroups: pl.comp.programming
Date: Fri, 16 Mar 2018 06:26:02 -0700 (PDT)
In-Reply-To: <p8et3h$la0$1@node1.news.atman.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.254.42.226;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 77.254.42.226
References: <p8cgcv$bd7$1@node1.news.atman.pl> <p8d69b$p3b$1@node2.news.atman.pl>
<p8dia4$4c4$1@node2.news.atman.pl> <p8dlhd$eah$1@node1.news.atman.pl>
<p8drp1$d3l$1@node2.news.atman.pl> <p8ds7o$l09$1@node1.news.atman.pl>
<p8dtuu$f4c$1@node2.news.atman.pl>
<9...@g...com>
<p8ee5g$6h9$1@node1.news.atman.pl>
<9...@g...com>
<p8epa1$hic$1@node1.news.atman.pl>
<1...@g...com>
<p8et3h$la0$1@node1.news.atman.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b...@g...com>
Subject: Re: Jak usunąć najlepiej element z drzewa ?
From: "M.M." <m...@g...com>
Injection-Date: Fri, 16 Mar 2018 13:26:02 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 138
Xref: news-archive.icm.edu.pl pl.comp.programming:212340
[ ukryj nagłówki ]On Thursday, March 15, 2018 at 11:46:10 PM UTC+1, Borneq wrote:
> W dniu 15.03.2018 o 23:00, M.M. pisze:
> > Hmmm a po co usuwasz węzeł w drzewie do reprezentacji wyrażeń
> > arytmetycznych?
>
> Po to by zastąpić zmienną całym wyrażeniem.
Zastanów się, czy na stosie tego nie można zrobić. Bo jeśli się da, to
zaoszczędzisz sobie mnóstwa pracy. Rozumiesz... notacja polska, albo
jeszcze lepiej odwrotna notacja polska pana Łukasiewicza, ze stosu
zdejmujesz operandy, potem operator, wykonujesz operację i wyniki
wrzucasz znowu na stos i tak w kółko aż na stosie zostanie wynik.
Pozdrawiam
> Coś takiego:
> ma symbolicznie robić operację postawiania:
> na przykład gdy liczymy pierwiastek z n to ze wzoru (wybierając x
> początkowe)
> x:= (x+n/x)/2
> druga iteracja, podstawiamy wszędzie gdzie x całe wyrażenie:
> otrzymujemy ((x+n/x)/2+n/((x+n/x)/2))/2
> możemy dalej
> (((x+n/x)/2+n/((x+n/x)/2))/2+n/(((x+n/x)/2+n/((x+n/x
)/2))/2))/2
>
> Działa już klonowanie (można podczepić całe drzewko do swojej podgałęzi,
> jeszcze nie mam tu replace- jest innej wersji , gdzie nie działało
> klonowanie), trzeba dorobić dziedziczenie:
> #include <memory>
> #include <string>
> #include <vector>
> #include <assert.h>
>
> using namespace std;
>
> class Node
> {
> vector<shared_ptr<Node>> childs;
> Node* parent = nullptr;//not shared_ptr! because of memory leaks of
> circular dependency
> int level = 0;
> public:
> string name;
> Node(string name)
> {
> this->name = name;
> }
> ~Node()
> {
> printf("delete %s\n",name.c_str());
> }
> shared_ptr<Node> cloneOne()
> {
> shared_ptr<Node> result = make_shared<Node>(name+"a");
> return result;
> }
>
> shared_ptr<Node> cloneTree()
> {
> shared_ptr<Node> newElem = cloneOne();
> for (size_t i = 0; i<childs.size(); i++)
> {
> shared_ptr<Node> subElem = childs[i]->cloneTree();
> newElem->AddOneChild(subElem);
> }
> return newElem;
> }
>
> void erase()
> {
> printf("erase from %s\n", name.c_str());
> childs.clear();
> }
> void deleteChild(int index)
> {
> printf("delete child %d from %s - %s\n", index, name.c_str(),
> childs[index]->name.c_str());
> childs.erase(childs.begin()+index);
> }
>
> void setLevel(int level)
> {
> this->level = level;
> for (size_t i = 0; i<childs.size(); i++)
> childs[i]->setLevel(level+1);
> }
>
> void AddOneChild(shared_ptr<Node> node)
> {
> childs.push_back(node);
> node->parent = this;
> }
>
> void AddTree(shared_ptr<Node> node)
> {
> shared_ptr<Node> clone = node->cloneTree();
> AddOneChild(clone);
> clone->setLevel(level+1);
> }
> shared_ptr<Node>& at(int index)
> {
> return childs[index];
> }
> void print()
> {
> for (int i = 0; i<level; i++)
> printf(" ");
> printf("%s->",name.c_str());
> if (parent) printf("%s", parent->name.c_str());
> printf("\n");
> for (size_t i=0; i<childs.size(); i++)
> childs[i]->print();
> }
> };
>
> int main()
> {
> shared_ptr<Node>root,rootB;
> root = make_shared<Node>("1");
> root->AddTree(make_shared<Node>("2"));
> root->AddTree(make_shared<Node>("3"));
> root->at(0)->AddTree(make_shared<Node>("4"));
> root->at(0)->AddTree(make_shared<Node>("5"));
> root->at(1)->AddTree(make_shared<Node>("6"));
> root->at(1)->AddTree(make_shared<Node>("7"));
> root->at(1)->AddTree(root);
> root->print();
> return 0;
> }
Najnowsze wątki z tej grupy
- 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
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-07-04 Białystok => Kotlin Developer <=
- 2025-07-04 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-07-04 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-07-04 Zakrzewo => Konsultant SAP HCM <=
- 2025-07-04 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-04 Szczecin => Key Account Manager IT <=
- 2025-07-04 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-04 Warszawa => Technique IT - Hardware Configuration and Support <=
- 2025-07-04 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=