MTSL/h/LinkList.h

81 lines
1.4 KiB
C++

//
// Created by dongl on 22-9-20.
//
#ifndef CPP_LINKLIST_H
#define CPP_LINKLIST_H
#include <iostream>
#endif //CPP_LINKLIST_H
class LNode{
friend class Link;
public:
int data = 0x0;
private:
LNode *next = nullptr;
void update(int el){
data = el;
}
};
class Link{
LNode *lNode = (LNode*) new LNode;
unsigned int _length = 0;
LNode* _begin = lNode;
public:
Link(){
}
void add(int el){
lNode = lNode->next = new LNode;
lNode->data = el;
_length++;
lNode->next = new LNode;
};
int get(int index){
int el;
LNode* node = _begin;
for (int i = 0; i < index; ++i) {
node = node->next;
el = node->data;
}
return el;
}
void remove(unsigned int index){
if(index > _length+1)
std::cout << "超越范围之外" << std::endl;
LNode* begin = _begin;
for (int i = 1; i < index; ++i) {
begin = _begin->next;
}
LNode* node = begin->next;
begin->next = begin->next->next;
delete node;
_length--;
}
void update(int index, int el){
LNode* node;
for (int i = 0; i < index; ++i) {
node = _begin->next;
}
node->data = el;
}
int length(){
return _length;
}
LNode*& begin(){
return _begin->next;
}
};