xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 142KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2024-01-25
  • 語言: C/C++
  • 標簽:

資源簡介

C++信號放大器 (1) 運用二叉樹的定義將左孩子、右孩子、結點值、權值即與父結點的衰減量、以及當前結點的最大衰減量聯系起來。 (2) 設置信號放大器函數 該函數主要實現判斷是否超過容忍值并在合適位置放置信號放大器使其數量最少。 首先將當前結點最大衰減量D初始化,當只有右子樹時即左子樹為空,計算出當前結點的最大衰減量,判斷當超過容忍值時則放置信號放大器并輸出;當只有左子樹時即右子樹為空,計算出當前結點的最大衰減量,判斷當超過容忍值時則放置信號放大器并輸出;當左右子樹都存在并左子樹的衰減量大于右子樹時則計算當前結點最大衰減量D并判斷是否超過容忍值并輸出,繼續進一步比較其右子樹的當前最大衰減量與右子樹的衰減量之和和其左子樹的衰減量,若大于則更新D,并判斷是否超過容忍值并輸出,再進一步比較其右子樹的衰減量與其左子樹的衰減量,若大于則再更新D;當左右子樹都存在且右子樹的衰減量大于左子樹時,比較方法與前者相似,顛倒左右即可。 通過此算法可將放置的放大器數目最少。 (3) 主函數 主函數中包括輸入信息時的聲明及相關函數的調用。 四 調試分析 該程序在設置信號放大器的比較算法上有些麻煩,需要進行很多比較。結點信息的輸入也比較麻煩,很浪費時間,還有就是輸出結果時最好將二叉樹的具體結構一同輸出便于檢查,并且形象直觀。

資源截圖

代碼片段和文件信息

#include?

using?namespace?std;

struct?node?????????????????//定義樹的元素
{
????struct?node?*lchild;
????struct?node?*rchild;
????char?data?;
????int?weight;
????int?D;????????????????//當前衰減量最大值
};
typedef?struct?node?*?BTREE?;

typedef?enum{L?R}?tagtype;

typedef?struct
{
????BTREE?ptr;
????tagtype?tag;
}stacknode;

typedef?struct
{
????stacknode?Elem[100];
????int?top;
}?Stack;

stacknode?Pop(?Stack?&S?)
{
????stacknode?c;
????c=S.Elem[?S.top?];
????S.top?=?S.top?-?1?;
????return?c;
}

void?Push?(?stacknode?x?Stack?&S?)
{
????S.top?=?S.top?+?1?;
????S.Elem[?S.top?]?=?x?;
}

typedef?struct
{
????char?data?parent?tag?;
????int?weight;
}?Bnode;

typedef?struct???????????//隊列
{
????BTREE?ele[100];
????int?frontrear;
}Squeue;

void?Makenull?(?Squeue?&Q)
{
????Q.front?=?0;
????Q.rear?=99;
}

BTREE?CreatBT(?)???????????????????//按邏輯結構建立二叉樹,依次輸入結點、父結點、標號、權值
{
????cout<<“請按邏輯結構輸入二叉樹“<????Bnode?p;
????Squeue?q;
????BTREE?root?s;
????root=new?node;
????root=NULL;
????Makenull(q);
????cin>>p.data>>p.parent>>p.tag>>p.weight;
????while?(p.data!=‘0‘)
????{
????????s=new?node;
????????s->data=p.data;
????????s->weight=p.weight;
????????s->lchild=s->rchild=NULL;
????????q.rear=(q.rear+1)%100;
????????q.ele[q.rear]=s;
????????if?(p.parent==‘0‘)
????????????root=s;
????????else
????????{
????????????while?(q.rear+1%100!=q.front&&q.ele[q.front]->data!=p.parent)
????????????????q.front=(q.front+1)%100;
????????????if?(q.ele?[q.front]->data==p.parent)
????????????{
????????????????if?(p.tag==‘L‘)
????????????????????q.ele[q.front]->lchild=s;
????????????????else
????????????????????q.ele[q.front]->rchild=s;
????????????}
????????}
????????cin>>p.data>>p.parent>>p.tag>>p.weight;
????}
????return?root;
}

void?Amplifier(BTREE?sbint?tol)?????????????????????//設置信號放大器函數
{
????BTREE?t;
????Stack?s;
????stacknode?x;
????s.top=0;
????t=sb;
????do
????{
????????while?(t!=NULL)
????????{
????????????x.ptr?=?t;
????????????x.tag?=?L;
????????????Push(xs);
????????????t=t->lchild;
????????}
????????while?(s.top!=0&&?s.Elem[s.top].tag==R)
????????{
????????????x?=?Pop(s);
????????????t?=?x.ptr;
????????????if?(t->lchild==NULL&&t->rchild==NULL)
????????????{
????????????????t->D=0;??????????????????????????//初始化
????????????}
????????????else?if?(t->lchild==NULL&&t->rchild!=NULL)
????????????{
????????????????t->D=t->rchild->D+t->rchild->weight;??????????????//只有右子樹時當前最大衰減量
????????????????if?(t->D>tol)??????????????????//大于容忍值則設置放大器
????????????????{
????????????????????cout<<“應該放置放大器的結點為:“;
????????????????????cout<rchild->data<????????????????????t->D=t->rchild->weight;
????????????????}

????????????}
????????????else?if?(t->lchild!=NULL&&t->rchild==NULL)??????//只有左子樹時當前最大衰減量
????????????{
????????????????t->D=t->lchild->D+t->lchild->weight;
????????????????if?(t->D>tol)??????????????????//大于容忍值則放置放大器
????????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-01-03?14:30??信號放大器\
?????文件????????6389??2012-01-03?12:37??信號放大器\信號放大器.cpp
?????文件??????477418??2012-01-03?12:42??信號放大器\信號放大器.exe
?????文件???????24576??2012-01-03?13:19??信號放大器\信號放大器說明.doc
?????文件???????33280??2012-01-03?13:20??信號放大器\課程設計報告.doc

評論

共有 條評論

相關資源