C++单链表的实现
SingleLinkedList.h
#pragma once
#include <iostream>
using namespace std;
// 单链表
class CList
{
public:
int Data;
CList *next;
public:
CList();
~CList();
};
class CSingleLinkedList
{
public:
CList *head;
public:
CSingleLinkedList();
~CSingleLinkedList();
public:
// 增
void Insert(CList*&,int);
// 删
void Delete(CList*&,int);
// 改
void Change(CList*,int,int);
// 查
void Inquire(CList*,int);
public:
void DisPlay(CList*);
void DeleteAll(CList*);
};
SingleLinkedList.cpp
#include "SingleLinkedList.h"
CList::CList()
{
}
CList::~CList()
{
}
CSingleLinkedList::CSingleLinkedList()
{
head = new CList;
head->next = nullptr;
}
CSingleLinkedList::~CSingleLinkedList()
{
DeleteAll(head);
}
void CSingleLinkedList::Insert(CList*& node, int data)
{
if (node == nullptr)
{
node = new CList;
node->Data = data;
node->next = nullptr;
return;
}
Insert(node->next,data);
}
void CSingleLinkedList::Delete(CList *&node, int data)
{
if (node == nullptr)
{
return;
}
while (node->Data == data)
{
CList *newlist;
newlist = node;
node = node->next;
delete newlist;
newlist = nullptr;
if (node == nullptr)
{
return;
}
}
Delete(node->next,data);
}
void CSingleLinkedList::Change(CList *node, int data, int newdata)
{
if (node == nullptr)
{
return;
}
if (node->Data == data)
{
node->Data = newdata;
}
Change(node->next, data, newdata);
}
void CSingleLinkedList::Inquire(CList *node, int data)
{
if (node == nullptr)
{
cout << "未找到" << endl;
return;
}
if (node->Data == data)
{
cout << "找到" << endl;
return;
}
Inquire(node->next,data);
}
void CSingleLinkedList::DisPlay(CList* node)
{
if (node == nullptr)
{
return;
}
static int index = 0;
cout <<"第" << index++ << "个数据为" << node->Data << endl;
DisPlay(node->next);
}
void CSingleLinkedList::DeleteAll(CList *node)
{
if (node == nullptr)
{
return;
}
DeleteAll(node->next);
delete node;
node = nullptr;
}