当前位置: 首页 > news >正文

网站开发框架 c网站建设 技术 哪些内容

网站开发框架 c,网站建设 技术 哪些内容,个人申请营业执照流程,提供建立网站服务的公司templateclass T void HeapT::PercolateUp() //为了向上调整为堆#xff0c;我们需要比较当前节点和其父节点的值#xff0c;如果父节点的值比当前节点大#xff0c;则交换它们的值。 { int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点#xff0… templateclass T void HeapT::PercolateUp() //为了向上调整为堆我们需要比较当前节点和其父节点的值如果父节点的值比当前节点大则交换它们的值。 {     int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点p表示当前节点。     T temp vec[p];     while (p 0) //为什么不是c0                 //在while循环中我们判断当前节点是否已经到达根节点如果是根节点则停止循环。所以条件应该是p 0而不是c 0。              {         if (vec[c] temp)             break;         else         {             vec[p] vec[c];             p c;             c (p - 1) / 2;         }     }     vec[p] temp; //写在while 里面还是外面 目前结点最后会空出来 }   templateclass T void HeapT::PercolateDown(int h)// 向下调整为堆如果父亲节点目前结点比孩子结点(较小值大交换 {     int p h, c 2 * p 1;// c为p的左孩子     T temp vec[h]; //不定类型  不用写成int     while (c size)  //怎么修改     {         if (c 1 size vec[c 1] vec[c]) //左孩子的下标小于size-1最后一个叶子结点找到左右孩子的最小值 //c size表示当前节点有左孩子而c 1 size表示当前节点有右孩子。根据堆的性质选择较小的孩子进行交换。         {             c;         }         if (temp vec[c])             break;         else         {             vec[p] vec[c];             p c;             c 2 * p 1;         }     }     vec[p] temp; }  #includeiostream #includevector #includequeue using namespace std;templateclass T struct BTNode {T data;BTNode* left, * right;BTNode(const T item T(), BTNode* lptr NULL, BTNode* rptr NULL) :data(item), left(lptr), right(rptr) {} };void Gotoxy(int x, int y) {static int level 0, indent 0;if (y 0){indent 0;level 0;}if (level ! y){cout endl;indent 0;level;}cout.width(x - indent);indent x; }templateclass T BTNodeT* GetBTNode(const T item, BTNodeT* lp NULL, BTNodeT* rp NULL) {BTNodeT* p;p new BTNodeT(item, lp, rp);if (p NULL){cout error! endl;}return p; }struct Location {int xindent, ylevel; };templateclass T void PrintBTree(const BTNodeT* t, int screenwidth) {if (t NULL){return;}int level 0, offset screenwidth / 2;Location floc, cloc;queueconst BTNodeT* Q;queueLocation LQ;floc.xindent offset;floc.ylevel level;Q.push(t);LQ.push(floc);while (!Q.empty()){t Q.front();floc LQ.front();Q.pop();LQ.pop();Gotoxy(floc.xindent, floc.ylevel);cout t-data;if (floc.ylevel ! level){level;offset offset / 2;}if (t-left){Q.push(t-left);cloc.ylevel floc.ylevel 1;cloc.xindent floc.xindent - offset / 2;LQ.push(cloc);}if (t-right){Q.push(t-right);cloc.ylevel floc.ylevel 1;cloc.xindent floc.xindent offset / 2;LQ.push(cloc);}}cout endl;}templateclass T class Heap //小根堆 根-叶子 小到大 {vectorT vec;int size;void BuildHeap(void);void PercolateUp();void PercolateDown(int h); public:Heap(int max 100) : vec(max), size(0) {}Heap(const vectorT vt);int Size(){return size;}void Insert(const T item);void DeleteMin(void);void DeleteMin(T item); };templateclass T void HeapT::PercolateUp() //为了向上调整为堆我们需要比较当前节点和其父节点的值如果父节点的值比当前节点大则交换它们的值。 {int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点p表示当前节点。T temp vec[p];while (p 0) //为什么不是c0//在while循环中我们判断当前节点是否已经到达根节点如果是根节点则停止循环。所以条件应该是p 0而不是c 0。{if (vec[c] temp)break;else{vec[p] vec[c];p c;c (p - 1) / 2;}}vec[p] temp; //写在while 里面还是外面 目前结点最后会空出来 }templateclass T void HeapT::PercolateDown(int h)// 向下调整为堆如果父亲节点目前结点比孩子结点(较小值大交换 {int p h, c 2 * p 1;// c为p的左孩子T temp vec[h];while (c size) //怎么修改{if (c 1 size vec[c 1] vec[c]) //左孩子的下标小于size-1最后一个叶子结点找到左右孩子的最小值{c;}if (temp vec[c])break;else{vec[p] vec[c];p c;c 2 * p 1;}}vec[p] temp; }templateclass T void HeapT::Insert(const T item) {if (size vec.size()){vec.resize(vec.size() *2);}vec[size] item;size;PercolateUp();}templateclass T void HeapT::BuildHeap(void) //从最后一个非叶子结点a)开始size-1是最后一个叶子结点,a是它的parent {for (int i size / 2 - 1; i 0; i--){PercolateDown(i);//为该结点的子树调整成堆} }templateclass T void HeapT::DeleteMin() {if (size 0){return;}vec[0] vec[size - 1];size--;PercolateDown(0); }templateclass T void HeapT::DeleteMin(T item) {if (size 0) //删除最小值需要判断堆是否为空{return;}item vec[0];vec[0] vec[size - 1];size--;PercolateDown(0); }templateclass T HeapT::Heap(const vectorT vt) : vec(vt.size() 10), size(vt.size()) {for (int i 0; i size; i){vec[i] vt[i];}BuildHeap(); }templateclass T struct HuffmanNode {BTNodeT* t;int operator(const HuffmanNode h)//穿入参数是哈夫曼节点 bool类型{return (t-data h.t-data);}int operator(const HuffmanNode h)//穿入参数是哈夫曼节点{return (t-data h.t-data);} };templateclass T BTNodeT* MakeHuffman(T* pa, int n) {BTNodeT* t, * right, * left;HuffmanNodeT hf;HeapHuffmanNodeT HF(n);//第一个循环将数组里的元素插入到哈夫曼堆for (int i 0; i n; i){t GetBTNodeint(pa[i]);hf.t t;HF.Insert(hf);}//第二个循环找到最小的两个数生成根节点后删除for (int i 1; i n; i){HF.DeleteMin(hf);left hf.t;HF.DeleteMin(hf);right hf.t;t GetBTNode(left-data right-data, left, right);//t的左孩子是left,右孩子是righthf.t t;HF.Insert(hf);}HF.DeleteMin(hf);//是一个对象调用函数t hf.t;return t; };int main() {int a[] { 7,5,2,4 };BTNodeint* root;root MakeHuffman(a, 4);PrintBTree(root, 40);cout endl;return 0; }
http://www.w-s-a.com/news/679097/

相关文章:

  • 跨境电商运营主要做什么静态网站如何做优化
  • 南充网站建设网站网站备案安全责任书是谁盖章
  • 怎么将网站设置为首页网站子目录怎么做
  • 做网站交互wordpress信息导出
  • 如何自己做企业网站做外贸登录国外网站
  • 郑州炫彩网站建设网站集约化建设调研报告
  • 2016年两学一做教育网站优良的定制网站建设制作商
  • 自己做网站需要哪些流程网站建设服务费如何做会计分录
  • 莆田建站培训用手机制作游戏的app软件
  • 中山建网站找哪家wordpress采集图片插件
  • 网站首页做后台链接有什么好用的模拟建站软件
  • 宁波有没有开发网站的公司网站上线除了备案还需要什么
  • 网站备案授权wordpress默认主体设置
  • 厦门微信网站广州推广策划公司
  • 集团公司网站开发asp网站怎么运行
  • 广州短视频网站开发东莞市建设信息网
  • 建设网站如果赚钱电脑可以做服务器部署网站吗
  • 网站建设的编程专门做面包和蛋糕的网站
  • 档案网站建设比较分析南京建站公司
  • 哪个网站可以做店招傻瓜式wordpress
  • 网站开发项目经理职责青岛模版网站建设
  • 企业建站哪个好网站建设所用程序
  • 网站建设seo视频定制图片软件
  • 404错误直接转向到网站首页四川省建筑施工企业人员考试平台
  • 手表电商网站智能展厅
  • 南海网站推广梅州做网站公司
  • 昆明专业网站建设公司成都外贸网站建设费用
  • php mysql网站开发项目公司网站宣传设计
  • 自己做网站服务器的备案方法怎么查网站点击量
  • 信息产业部icp备案中心网站织梦做双语网站