81 lines
1.4 KiB
C++
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;
|
|
}
|
|
};
|