因为今天没有时间了,只实现了一些简单的操作,功能还不全,有待增强
1.头文件
#ifndef List
#define List
class Node{
public:
int date;
Node *next;
};
class Linklist{
public:
Linklist();
~Linklist();
int getLength();
bool insertElem(int index, int elem);
bool delElem(int elem);
void display();
Node* findElem(int elem);
private:
Node *head;
};
#endif
2.具体实现
#include<iostream>
#include"Linklist.h"
using namespace std;
Linklist::Linklist()
{
head = new Node;
head->date = 0;
head->next = nullptr;
}
Linklist::~Linklist()
{
Node* ptr1 = this->head;
Node* ptr2 = this->head;
while (ptr2 != nullptr)
{
ptr2 = ptr2->next;
delete ptr1;
Node* ptr1 = ptr2;
}
delete ptr2;
delete ptr1;
delete head;
ptr1 = nullptr;
ptr2 = nullptr;
head = nullptr;
}
Node* Linklist::findElem(int elem){
Node* ptr = head;
if (ptr->next == nullptr){
cout << "empty Linklist" << endl;
return nullptr;
}
else
{
while (ptr->next != nullptr){
if (ptr->date == elem)
return ptr;
ptr = ptr->next;
}
return nullptr;
}
}
bool Linklist::insertElem(int index,int elem){
if (index <= 0 || index > (getLength()+1)){
cout << "wrong index" << endl;
return false;
}
int num = 1;
Node* ptr1 = new Node;
ptr1->date = elem;
Node* p = head;
while (num != index)
{
p = p->next;
num++;
}
ptr1->next = p->next;
p->next = ptr1;
return true;
}
void Linklist::display(){
if (head == nullptr || head->next == nullptr)
{
cout << "Linklist is empty" << endl;
return;
}
Node* ptr = head;
while (ptr->next != nullptr)
{
ptr = ptr->next;
cout << ptr->date << " ";
}
cout << endl;
}
int Linklist::getLength(){
int num = 0;
Node* ptr = head;
while (ptr->next != nullptr)
{
num++;
ptr = ptr->next;
}
return num;
}
bool Linklist::delElem(int elem){
Node* ptr1 = findElem(elem);
if (ptr1 == nullptr)
return NULL;
Node* ptr2 = head;
if (ptr2->next != ptr1)
{
ptr2 = ptr2->next;
}
ptr2->next = ptr1->next;
delete ptr1;
ptr1 = nullptr;
return true;
}
void main(){
Linklist list;
list.insertElem(1, 2);
list.display();
list.insertElem(2, 3);
list.insertElem(3, 8);
list.insertElem(1, 2);
list.insertElem(2, 3);
list.insertElem(4, 6);
list.insertElem(1, 2);
list.insertElem(1, 5);
list.display();
list.delElem(2);
list.delElem(8);
list.delElem(2);
list.display();
system("pause");
return;
}