自己寫的bug應該很多
binheapnode.h
#includeusing namespace std;
class binheap;
class binheapnode
~binheapnode()
void destory()
};
binheap.h
#include"binheapnode.h"
class binheap
~binheap()
void destory1(binheapnode*node) }
binheapnode* findminnum()
p=p->sibling;
} return y;
} //將以y為根的二項樹和以z為根的二項樹合併,使z為y的父節點
void binlink(binheapnode* y,binheapnode*z)
binheapnode*binheapmerge(binheapnode*head1,binheapnode*head2)
if(head2==null)
binheapnode*x,*node1,*node2,*node3;
if(head1->degree<=head2->degree)
else
node3=x;
while(node1&&node2)
else
}if(node1==null)
}else
}return node3;
} void binheapunion(binheapnode*head1,binheapnode*head2)
else if(x->key<=nextx->key)
else
else
prex->sibling=nextx;
binlink(x,nextx);
x=nextx;
}nextx=nextx->sibling;
} }void bininsert(int x)
binheapnode*extractmin()
binheapnode*q=p,*node;
while(q->parent)
q=p;
while(q->sibling)
p->parent=null;
binheapunion(head,p);
return x;
} void binheapdcerasekey(binheapnode*x,int k) }
void binheapdelete(binheapnode*node)
void print(binheapnode*node)
; binheap heap1(4),heap(4);
int i;
/* for(i=0;i<7;i++)
heap1.print();
*/ int b[19]=;
binheap heap2(4);
for(i=0;i<19;i++)
heap2.print();
return 0;
}
第十九章 事務
redis的事務是指將多個命令請求打包,一次性地,按順序執行的機制。通過multi exec watch等命令實現事務功能。19.1.1 事務的開始 multi命令的執行代表了乙個事務的開始,會將執行該命令的客戶端由非事務狀態切換成事務狀態 在客戶端狀態的flags屬性中開啟redis multi標...
第十九章 19 1 1節練習
練習19.1 使用malloc編寫你自己的operator new size t 函式,使用free編寫operator delete void 函式。解答 這個也就參考書中實現吧。不過這裡我更傾向於使用模板來實現,不把new的引數寫死。練習19.2 預設情況下,allocator類使用operat...
第十九章 19 2 1節練習
練習19.3 已知存在如下的類繼承體系,其中每個類分別定義了乙個公有的預設建構函式和乙個虛析構函式 class a class b public a class c public b class d public b,public a 下面的哪個dynamic cast將失敗?a a pa new ...