//
// Created by respecting-god on 2022/2/19.
//
#include<stddef.h>
#include<iostream>
using namespace std;
class SingleLinkedList{
public:
// define the linkNode
struct LinkNode{
int val;
LinkNode* next;
LinkNode(int val): val(val), next(nullptr){}
};
private:
int _size;
LinkNode* _dummyHead;
// initial the linklist
SingleLinkedList(){
_dummyHead = new LinkNode(0);// 这里定义的头结点 是一个虚拟头结点,而不是真正的链表头结点
_size = 0;
}
// 获取到第index个节点数值,如果index是非法数值直接返回-1, 注意index是从0开始的,第0个节点就是头结点
int get(int index){
if(index > (_size - 1) || index < 0 ) {
return -1;
}
LinkNode* cur = _dummyHead->next;
while(index--){
cur = cur->next;
}
return cur->val;
}
void addAtHead(int val){
LinkNode* newNode = new LinkNode(val);
newNode->next = _dummyHead->next;
_dummyHead->next = newNode;
_size++;
}
void addAtTail(int val){
LinkNode* newNode = new LinkNode(val);
LinkNode* cur = _dummyHead;
while(cur->next != nullptr){
cur = cur->next;
}
cur->next = newNode;
_size++;
}
void addAtIndex(int index, int val) {
if (index > _size) {
return;
}
LinkNode* newNode = new LinkNode(val);
LinkNode* cur = _dummyHead;
while(index--) {
cur = cur->next;
}
newNode->next = cur->next;
cur->next = newNode;
_size++;
}
// 删除第index个节点,如果index 大于等于链表的长度,直接return,注意index是从0开始的
void deleteAtIndex(int index) {
if (index >= _size || index < 0) {
return;
}
LinkNode* cur = _dummyHead;
while(index--) {
cur = cur ->next;
}
LinkNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
_size--;
}
// 打印链表
void printLinkedList() {
LinkNode* cur = _dummyHead;
while (cur->next != nullptr) {
cout << cur->next->val << " ";
cur = cur->next;
}
cout << endl;
}
};
int main()
{
return 0;
}
2_3 单链表的设计 C++
于 2022-02-20 21:34:08 首次发布