class MyLinkedList{
public:
//定义链表结点结构体
struct LinkedNode{
int val; //结点上存储的元素
LinkedNode* next; //指向下一个结点的指针
LinkedNode(int val):val(val),next(nullptr){} //结点构造函数
};
//初始化链表
MyLinkedList(){
_dummyHead = new LinkedNode(0); //定义虚拟结点
_size = 0;
}
//获取第index个结点数值
int get(int index){
if(index > (_szie - 1) || index < 0){
return -1;
}
LinkedNode* cur = _dummyHead -> next;
while(index--){
cur = cur -> next;
}
return cur -> val;
}
//在链表最前面插入一个结点,插入完成后,该结点为链表最新头结点
void addAtHead(int val) {
LinkedNode* newNode = new LinkedNode(val);//新的数链表结点
newNode->next = _dummyHead->next; //将原链表的头节点赋予给新节点的下一个结点
_dummyHead -> next = newNode; //将该节点赋予原链表的初始结点
_size++;
}
// 在链表最后添加一个结点
void addAtTail(int val) {
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = _dummyHead;
while(cur->next != nullptr){
cur = cur -> next;
}//指针指向最后一个结点
cur -> next = newNode;
_size++;
}
//在第index结点之前插入一个新节点
void addAtIndex(int index, int val) {
if(index > _size){
return;
}
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = _dummyHead;
while(index--){
cur = cur -> next;
}
newNode -> next = cur ->next;
cur -> next = newNode;
_size++;
}
//删除第index个结点
void deleteAtIndex(int index) {
if(index >= _size || index < 0){
return;
}
LinkedNode* cur = _dummyHead;
while(index--){
cur = cur -> next;
}
LinkedNode* tmp = cur ->next;
cur -> next = cur -> next -> next;
delete tmp;
_size--;
}
//打印链表
void printLinkedList(){
LinkedNode* cur = _dummyHead;
while(cur -> next != nullptr){
cout << cur -> next ->val<<" ";
cur = cur -> next;
}
}
private:
int _size;
LinkedNode* _dummyHead;
};
}
链表基础知识
最新推荐文章于 2023-08-09 14:56:26 发布