📄 btreedemodlg.h
字号:
// BTreeDemoDlg.h : header file
//
#if !defined(AFX_BTREEDEMODLG_H__DAF6FDC9_82F7_421A_8281_F77F7DEBF787__INCLUDED_)
#define AFX_BTREEDEMODLG_H__DAF6FDC9_82F7_421A_8281_F77F7DEBF787__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
void NewNode(BTree* p);
int Sch_InsBTree(BTree* p,int key);
Result SearchBTree(BTree T,int k);
int Search(BTree p,int k);
void Insert(BTree q,int i,int x,BTree ap);
void split(BTree q,int s,BTree* ap);
void NewRoot(BTree* T,BTree q,int x, BTree ap);
//--delete
//该函数返回结点r所对应的parant中的ptr个数(num)
int Comp_child(BTree r);
//将p所指的结点中第k个关键字删除
int F_DeleteNode(BTree p,int k);
//获得兄弟结点的信息:在删除时用于判断属于那种情况
int F_GetSbInfo(BTree p);
//将r所指的第ri个关键字,与p所指的第pi个关键字交换
//该函数用于删除非叶子结点
int F_FarentExChild(BTree r,int ri,BTree p,int pi);
//返回p所指结点第k个关键字所对应的ptr[k-1](ptr[k])
//最大(最小)关键字所对应的BTree指针
BTree F_GetPMaxMin(BTree p,int k,int flag);
//该函数完成删除非叶子结点的第一步:
//与右端最小交换并删除,p为要删除的非叶子结点的指针
BTree F_DeleteNLeaf(BTree p,int k);
//该函数完成p结点于其父亲结点以及其右兄弟结点的结合
//并且删除相应的结点
void F_Combineright(BTree* p);
//该函数用于被删除结点的兄弟可用的情况
//p为待处理结点
void F_Exchange(BTree p,int flag);
//删除主函数
void DeleteBTree(BTree* t,int k);
//Now Add some new here
void Compute_xy(BTree t);//该函数计算屏幕输出相对位置
//删除所有的结点
void F_DelAll(BTree* t);
void Set_xy_Zero(BTree t);
UINT ThreadFunc(LPVOID pParam);
class CBTreeDemoDlg : public CDialog
{
// Construction
public:
CBTreeDemoDlg(CWnd* pParent = NULL); // standard constructor
//me Begin
CDC mdc; //m
CBitmap bmap;//m
CFont Dsp_Font;//m
CPen Dsp_pen;//m
CDC* Dsp_dc;//m
int pos_x; //m
int pos_y; //m
int d_strech;
void InitMdc(); //m
void EreaseMdc();//m
void MdcDsp();//m
// my BTree here
int rand_ip;
CString out_p;
void Draw_To_Mdc(BTree t);
void DrawNode_To_Mdc(BTree p);
void DrawLine_To_Mdc(BTree p);
void post_order(BTree T);
// Dialog Data
//{{AFX_DATA(CBTreeDemoDlg)
enum { IDD = IDD_BTREEDEMO_DIALOG };
CShadeButtonST m_setit;
CShadeButtonST m_travorder;
CStatic m_bdemo;
CShadeButtonST m_delball;
CMyEdit m_cdelnum;
CMyEdit m_cinsnum;
CShadeButtonST m_f_insert;
CShadeButtonST m_f_delete;
CMyEdit m_cBM;
CMyEdit m_crandnum;
CShadeButtonST m_randtree;
CButtonST m_big;
CScrollBar m_scrsz;
CScrollBar m_scrsp;
CButtonST m_exitme;
int m_randnum;
int m_BM;
int m_insnum;
int m_delnum;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBTreeDemoDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CBTreeDemoDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg UINT OnNcHitTest (CPoint point);
afx_msg BOOL OnEraseBkgnd (CDC *pDC);
afx_msg void OnExitme();
afx_msg void OnHScroll(UINT nCode,UINT nPos,CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nCode,UINT nPos,CScrollBar* pSCrollBar);
afx_msg void OnBig();
afx_msg void OnTimer(UINT nID);
afx_msg void OnRandtree();
afx_msg void OnFInsert();
afx_msg LRESULT OnThreadRedraw(WPARAM wParam,LPARAM lParam);
afx_msg LRESULT OnThreadFinish(WPARAM wParam,LPARAM lParam);
afx_msg void OnFDelete();
afx_msg void OnDelAll();
afx_msg void OnTravOrder();
afx_msg void OnSetIt();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BTREEDEMODLG_H__DAF6FDC9_82F7_421A_8281_F77F7DEBF787__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -