第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++等號右面的變量值被改變?

C++等號右面的變量值被改變?

C++
慕粉18341035298 2017-11-24 22:27:16
/* 只需要看一處。在標(biāo)2.的注釋處,newNode是parent的引用。經(jīng)過這一條語句, 等號右面的值被改變,其右兒子的值從2變?yōu)?。很不理解。 標(biāo)1.的注釋是進(jìn)入注釋2.的語句 編譯能通過,不過運(yùn)行出錯。我知道出錯的原因,只不理解值被改變的原因。 */ #include<iostream> #include<stack> using?namespace?std; //19.10 template<class?T> class?MinHeap{ private: int?CurrentSize,?MaxSize; T*heapMin; public: T&RemoveMin(T*&rt); void?Insert(T&newNode); MinHeap(int?num); virtual?~MinHeap(){?if?(MaxSize?>?0)delete[]heapMin;?}; public: void?swap(int?pos_x,?int?pos_y); void?siftDown(int?pos); void?siftUp(int?pos); int?getlson(int?pos){ return?pos?*?2?+?1; } int?getrson(int?pos){ return?pos?*?2?+?2; } int?getparent(int?pos){ return?(pos?-?1)?/?2; } }; template<class?T> MinHeap<T>::MinHeap(int?num){ if?(num?<=?0)return; MaxSize?=?num*3; CurrentSize?=?0; heapMin?=?new?T[num]; } template<class?T> void?MinHeap<T>::swap(int?pos_x,?int?pos_y){ T?temp?=?heapMin[pos_x]; heapMin[pos_x]?=?heapMin[pos_y]; heapMin[pos_y]?=?temp; } template<class?T> void?MinHeap<T>::siftDown(int?pos){ int?pos_min?=?getlson(pos); T?temp?=?heapMin[pos]; while?(pos?<?CurrentSize){ if?(pos_min+1<CurrentSize&&heapMin[pos_min]>heapMin[pos_min?+?1])pos_min++; if?(pos_min<CurrentSize&&heapMin[pos]>heapMin[pos_min]){ swap(pos,?pos_min); pos?=?pos_min; } else?break; } } template<class?T> void?MinHeap<T>::siftUp(int?pos){ int?par?=?getparent(pos); while?(par?>=?0?&&?heapMin[par]?>?heapMin[pos]){ swap(par,?pos); pos?=?par; } } template<class?T> void?MinHeap<T>::Insert(T&newNode){ if?(CurrentSize?==?MaxSize){ T*temp?=?new?T[++MaxSize]; for?(int?i?=?0;?i?<?CurrentSize;?i++){ temp[i]?=?heapMin[i]; } temp[CurrentSize]?=?newNode; delete[]heapMin; heapMin?=?new?T[MaxSize]; for?(int?i?=?0;?i?<?MaxSize;?i++){ heapMin[i]?=?temp[i]; } delete[]temp; temp?=?NULL; return; } else{ heapMin[CurrentSize]?=?newNode;??//斷點(diǎn)進(jìn)入這里,在剛進(jìn)入函數(shù)時newNode值是被傳進(jìn)來的值,經(jīng)過這一行后,newNode值被改變 CurrentSize++; siftUp(CurrentSize?-?1); } } template<class?T> T&MinHeap<T>::RemoveMin(T*&rt){ swap(0,?--CurrentSize); siftDown(0); rt?=?&heapMin[CurrentSize]; return?heapMin[CurrentSize]; } template<class?T>class?HuffmanTree; template<class?T> class?HuffmanTreeNode{ friend?class?HuffmanTree<T>; private: HuffmanTreeNode<T>*leftchild,?*rightchild,?*parent; T?data; public: HuffmanTreeNode<T>*getLChild(); HuffmanTreeNode<T>*getRChild(); HuffmanTreeNode<T>*getParent(); bool?operator?<?(HuffmanTreeNode<T>&t){?return?data?<?t.data;?} bool?operator?>?(HuffmanTreeNode<T>&t){?return?data>t.data;?} HuffmanTreeNode(); T?getData(){ return?data; } }; template<class?T> HuffmanTreeNode<T>::HuffmanTreeNode(){ leftchild?=?rightchild?=?parent?=?NULL; } template<class?T> HuffmanTreeNode<T>*?HuffmanTreeNode<T>::getLChild(){ return?leftchild; } template<class?T> HuffmanTreeNode<T>*?HuffmanTreeNode<T>::getRChild(){ return?rightchild; } template<class?T> HuffmanTreeNode<T>*HuffmanTreeNode<T>::getParent(){ return?parent; } template<class?T> class?HuffmanTree{ private: HuffmanTreeNode<T>*root; void?mergeTree(HuffmanTreeNode<T>*&left,?HuffmanTreeNode<T>*&right,?HuffmanTreeNode<T>*&parent); void?deleteTree(HuffmanTreeNode<T>*rt); public: virtual?~HuffmanTree(){?deleteTree(root);?} HuffmanTree(T?*weight,?int?num); void?preOrder(HuffmanTreeNode<T>*rt){ if?(rt?==?NULL)return; cout?<<?rt->data?<<?"?"; preOrder(rt->leftchild); preOrder(rt->rightchild); } HuffmanTreeNode<T>*getRoot(){ return?root; } }; template<class?T> HuffmanTree<T>::HuffmanTree(T?*weight,?int?num){ root?=?NULL; MinHeap<HuffmanTreeNode<T>?>heap(num); HuffmanTreeNode<T>*nodelist?=?new?HuffmanTreeNode<T>[num*3]; for?(int?i?=?0;?i?<?num;?i++){ nodelist[i].data?=?weight[i]; nodelist[i].rightchild?=?nodelist[i].leftchild?=?nodelist[i].parent?=?NULL; heap.Insert(nodelist[i]); } HuffmanTreeNode<T>*temp; for?(int?i?=?0;?i?<?num?-?1;?i++){ HuffmanTreeNode<T>*left?=?new?HuffmanTreeNode<T>; HuffmanTreeNode<T>*right?=?new?HuffmanTreeNode<T>; HuffmanTreeNode<T>*parent?=?new?HuffmanTreeNode<T>; heap.RemoveMin(left); heap.RemoveMin(right); mergeTree(left,?right,?parent); heap.Insert(*parent);??//1.斷點(diǎn)進(jìn)入這里 root?=?parent; } root; delete[]nodelist; } template<class?T> void?HuffmanTree<T>::deleteTree(HuffmanTreeNode<T>*rt){ if?(rt?==?NULL)return; deleteTree(rt->rightchild); deleteTree(rt->leftchild); delete?rt; } template<class?T> void?HuffmanTree<T>::mergeTree(HuffmanTreeNode<T>*&left,?HuffmanTreeNode<T>*&right,?HuffmanTreeNode<T>*&parent){ parent->parent?=?NULL; parent->leftchild?=?left; parent->rightchild?=?right; parent->data?=?left->data?+?right->data; (left->parent?)=?(right->parent)?=?parent; } int?main() { int?weight[3]?=?{?4,?2?}; HuffmanTree<int>heap(weight,?2); }
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關(guān)注
  • 1191 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號