⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btreedemodlg.h

📁 B-树演示程序(vc++)可执行程序.rar
💻 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 + -