`
weihe6666
  • 浏览: 430196 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++ 单链表

    博客分类:
  • C++
阅读更多
//LinkList.h
//Define the Node of Link
struct	List
{
	int Data;
	struct List *Next; 
};

typedef struct List Node;
typedef Node *Link;

class LinkList
{
public:
    LinkList();
	~LinkList();
	//The method of the class
	bool InitList();
	bool DestoryList();
	bool ClearList();
	bool IsEmpty();
	bool InsertNode(int Data);
	bool SetNodeData(int Data_old,int Data_new);
	void PrintLink();	
	bool DeleteNode(int Data);
private:
	Link m_Link;
	int m_Data;
};




//LinkList.cpp
#include <iostream>
using namespace std;

#include "LinkList.h"

//The method of class LinkList
LinkList ::LinkList()
{
  m_Link = NULL;
  m_Data = 0;

  InitList();
}

LinkList ::~LinkList()
{
  if(!DestoryList())
  {
	  DestoryList();
  }

}

bool LinkList::InitList()
{
	//初始化一个新的节点
	if(!(m_Link = new Node()))
     return false;
	else
	{
		m_Link->Next = NULL;
		return true;
	}
}

bool LinkList ::InsertNode(int Temp_Data)
{
  Link New ;
  Link Pointer;
  New = new Node();
  New->Data = Temp_Data;
  New->Next = NULL;
 
  if(m_Link->Data == 0)
  {
	 m_Link->Data = Temp_Data;
  }
  else
  {
	   Pointer = m_Link;
	  while(Pointer->Next != NULL)
	  {
		  Pointer = Pointer->Next;
	  }
	  Pointer->Next = New;
  }
return true;
}

bool LinkList::IsEmpty()
{
	if(m_Link != NULL)
		return false;
	else
	   return true;
}

bool LinkList::SetNodeData(int Data_old,int Data_new)
{
	Link Pointer;
	Pointer = m_Link;
	if(!IsEmpty())
	{
     while(Pointer != NULL)
	 {
		 if(Pointer->Data == Data_old)
		 {
			 Pointer->Data = Data_new;
			 break;
		 }
		 Pointer = Pointer->Next;
	 }
	}
	return true;
}

void LinkList::PrintLink()
{
	Link Pointer;
	Pointer = m_Link;
	int Temp =0;

	while(Pointer != NULL)
	{
		cout << "The Position of this Node :" << Temp << " " << "The content of this Node :" << Pointer->Data << endl;
		Temp ++;
		Pointer = Pointer->Next;
	}
	
}

bool LinkList::DeleteNode(int Data)
{
	bool Temp = false;
	Link Pointer;
	Link Back;
	Pointer = m_Link;

	if(IsEmpty())
	{
		cout << "The Link is NULL" << endl;
		return Temp;
	}
	//删除首节点
	if(Pointer->Data == Data)
	{
		m_Link = Pointer->Next;
		free(Pointer);
	}
	else
	{
		Back = Pointer;
		Pointer = Pointer->Next;
		while(Pointer != NULL)
		{
			if(Pointer->Data == Data)
			{
             Back->Next = Pointer->Next;
			 free(Pointer);
			 Temp = true;
			 break;
			}
		}
	}
return Temp;
}

bool LinkList::ClearList()
{
	if(m_Link == NULL)
		return false;

	Link Pointer;
	while( m_Link != NULL)
	{
		Pointer = m_Link;
		m_Link = Pointer->Next;
		free(Pointer);
	}
	return true;
}

bool LinkList::DestoryList()
{
	if(!ClearList())
	{
		return false;
	}

	delete m_Link;
	return true;
}


int main()
{
   LinkList Temp;
   Temp.InsertNode(20);
   Temp.InsertNode(30);
   Temp.InsertNode(40);
   Temp.InsertNode(50);
   Temp.PrintLink();

   Temp.SetNodeData(20,100);
   Temp.PrintLink();
	return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics