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

📄 heterlist.cpp

📁 异质链表 的实现 实现异质链表的查找、插入、删除和遍历
💻 CPP
字号:
// HeterList.cpp: implementation of the CHeterList class.
//
//////////////////////////////////////////////////////////////////////

#include "HeterList.h"
#include "iostream.h"
#include "NodeBase.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CHeterList::CHeterList()
{
	m_pHead = 0;
}

CHeterList::~CHeterList()
{
	while(m_pHead)
	{
		CNodeBase* pTemp = m_pHead->GetNext();
		delete m_pHead;
		m_pHead = pTemp;
	}
}

void CHeterList::AddNode(CNodeBase* node)
{
	if( m_pHead == 0 )
		m_pHead = node;
	else
	{
		CNodeBase* pTemp = m_pHead;
		while(pTemp->GetNext() != 0 )
		{
			pTemp = pTemp->GetNext();
		}
		pTemp->SetNext(node);
	}
}

bool CHeterList::FindNode(CNodeBase& node)
{
	if( m_pHead == 0 )
		return false;
	bool isFind = false;
	CNodeBase* pTemp = m_pHead;
	while(pTemp !=0 )
	{
		if(*pTemp==&node)
		{
			isFind = true;
			break;
		}
		else
		{
			pTemp = pTemp->GetNext();
		}
	}
	return isFind;
}

void CHeterList::DeleteNode(CNodeBase& node)
{
	if( m_pHead == 0 )
		return;
	if( *m_pHead==&node)
	{
		CNodeBase* pTemp = m_pHead->GetNext();
		delete m_pHead;
		m_pHead = pTemp;
	}
	else
	{
		CNodeBase* pTemp = m_pHead;
		while(pTemp !=0 )
		{
			if( pTemp->GetNext() != 0 && *(pTemp->GetNext())==&node)
			{
				CNodeBase* pTemp1 = pTemp->GetNext();
				pTemp->SetNext(pTemp->GetNext()->GetNext());
				delete pTemp1;
				pTemp1 = 0;
				break;
			}
			else
				pTemp = pTemp->GetNext();
		}
	}
}

void CHeterList::VisitAllNode()
{
	CNodeBase* pTemp = m_pHead;
	while(pTemp)
	{
		pTemp->Visit();
		pTemp = pTemp->GetNext();
	}
}

⌨️ 快捷键说明

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