1. 设计链表
1.1 思路
主要注意:1、链表节点的定义;2、边界条件的判定;3、C++类的定义方式
1.2 代码
class MyLinkedList {
private:
struct ListNode{
int val;
ListNode *next;
ListNode(int val): val(val), next(nullptr){}; //注意链表节点的初始化方法
};
int _size;
ListNode *_dummyHead;
public:
MyLinkedList() {
_dummyHead = new ListNode(-1); //创建一个虚拟头节点
_size = 0;
}
int get(int index) {
if(index > (_size - 1) || index < 0){
return -1;
}
ListNode *cur = _dummyHead->next;
while(index--){
cur = cur->next;
}
return cur->val;
}
void addAtHead(int val) {
ListNode *newNode = new ListNode(val);
newNode->next = _dummyHead->next;
_dummyHead->next = newNode;
_size++;
}
void addAtTail(int val) {
ListNode *newNode = new ListNode(val);
ListNode *tailNode = _dummyHead;
while(tailNode->next != nullptr){
tailNode = tailNode->next;
}
t