您的位置:首页 > 理论基础 > 数据结构算法

【C++数据结构】单链表

2016-09-27 17:01 363 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: