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

📄 outputview.cpp

📁 BFS、DFS、有向图、无向图中的各种算法的实现
💻 CPP
字号:
// OutputView.cpp : implementation file
//

#include "stdafx.h"
#include "graph.h"

#include "graphDoc.h"
#include "OutputView.h"

#include "stack.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// COutputView

IMPLEMENT_DYNCREATE(COutputView, CFormView)

COutputView::COutputView()
	: CFormView(COutputView::IDD)
{
	//{{AFX_DATA_INIT(COutputView)
	//}}AFX_DATA_INIT
}

COutputView::~COutputView()
{
}

void COutputView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COutputView)
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(COutputView, CFormView)
	//{{AFX_MSG_MAP(COutputView)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COutputView diagnostics

#ifdef _DEBUG
void COutputView::AssertValid() const
{
	CFormView::AssertValid();
}

void COutputView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
CGraphDoc* COutputView::GetDocument()
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraphDoc)));
	return (CGraphDoc*)m_pDocument;
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COutputView message handlers


void COutputView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{	
	
	CGraphDoc* pdoc = GetDocument();
 	UpdateData(FALSE);

	CListCtrl* plist = (CListCtrl*)GetDlgItem(IDC_LIST1);
	int i = 0;
	LV_ITEM lvitem;
	plist->DeleteAllItems();
	char p[10];
	CString str,str1;
	VerNode* pver;
	ArcNode* parc;

	switch(pdoc->m_ntype){
	case 0:
		for(pver = pdoc->m_queue.m_phead;pver;pver = pver->m_pnextver){
			for(parc = pver->m_pfirstarc;parc;parc = parc->m_pnextarc){
				
					lvitem.mask = LVIF_TEXT;
					lvitem.iItem = i++;
					lvitem.iSubItem = 0;
					str.Format("%d",i);
					strcpy(p,str);
					lvitem.pszText = p;
					plist->InsertItem(&lvitem);

					lvitem.iSubItem = 1;
					strcpy(p,pver->m_strname);
					lvitem.pszText = p;
					plist->SetItem(&lvitem);

					lvitem.iSubItem = 2;
					strcpy(p,parc->m_padjver->m_strname);
					lvitem.pszText = p;
					plist->SetItem(&lvitem);

					lvitem.iSubItem = 3;
					str1.Format("%d",parc->info);
					strcpy(p,str1);
					lvitem.pszText = p;
					plist->SetItem(&lvitem);
			}//INNER FOR
		}//OUTER FOR 
		break;
	case 1:
		stack stack1;
		for(pver = pdoc->m_queue.m_phead;pver;pver = pver->m_pnextver){
			for(parc = pver->m_pfirstarc;parc;parc = parc->m_pnextarc){
				
				if(!stack1.FindInStack(parc->info)){	
					stack1.Push(parc->info);

					lvitem.mask = LVIF_TEXT;
					lvitem.iItem = i++;
					lvitem.iSubItem = 0;
					str.Format("%d",i);
					strcpy(p,str);
					lvitem.pszText = p;
					plist->InsertItem(&lvitem);

					lvitem.iSubItem = 1;
					strcpy(p,pver->m_strname);
					lvitem.pszText = p;
					plist->SetItem(&lvitem);

					lvitem.iSubItem = 2;
					strcpy(p,parc->m_padjver->m_strname);
					lvitem.pszText = p;
					plist->SetItem(&lvitem);
				
				}//IF
			}//FOR INNER
		}//FOR OUTER
		break;
	}//SWITCH
}


void COutputView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();

	CListCtrl* plist = (CListCtrl*)GetDlgItem(IDC_LIST1);
	plist->InsertColumn(0,"标号",LVCFMT_LEFT,40,0);
	plist->InsertColumn(1,"起点",LVCFMT_LEFT,45,1);
	plist->InsertColumn(2,"终点",LVCFMT_LEFT,45,2);
	plist->InsertColumn(3,"权值",LVCFMT_LEFT,40,3);

	plist->SetBkColor(RGB(190,187,225));
	plist->SetTextBkColor(RGB(190,187,225));
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -