//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; }