我的
想法:
问题:
正确
思路:
适用场景:
代码
#include <iostream>
using namespace std;
#include <vector>
class MylinkedList
{
public:
struct ListNode {
int val;
ListNode* next;
ListNode(int val) : val(val), next(nullptr) {}
};
MylinkedList() {
_dummyNode = new ListNode(0);
_size = 0;
}
int get(int index) {
ListNode* curr = _dummyNode->next;
if (index > (_size - 1) || index < 0) {
return -1;
}
while (index--) {
curr = curr->next;
}
return curr->val;
}
void addAtHead(int val) {
ListNode* newNode = new ListNode(val);
newNode->next = _dummyNode->next;
_dummyNode->next = newNode;
_size++;
}
void addAtTail(int val) {
ListNode* newNode = new ListNode(val);
ListNode* curr = _dummyNode;
while (curr->next != nullptr) {
curr = curr->next;
}
curr->next = newNode;
_size++;
}
void addAtIndex(int index, int val) {
if (index > _size) {
cout << "插入位置不对,太大了" << endl;
return;
}
ListNode* newNode = new ListNode(val);
ListNode* curr = _dummyNode;
while (index--) {
curr = curr->next;
}
newNode->next = curr->next;
curr->next = newNode;
_size++;
}
void deleteAtIndex(int index) {
if (index > (_size - 1) || index < 0) {
return;
}
ListNode* curr = _dummyNode;
while (index--) {
curr = curr->next;
}
ListNode* temp = curr->next;
curr->next = curr->next->next;
_size--;
delete temp;
}
void printLinkedList() {
ListNode* curr = _dummyNode;
while (curr->next != nullptr) {
cout << curr->next->val << " ";
curr = curr->next;
}
cout << endl;
}
private:
ListNode* _dummyNode;
int _size;
};
int main()
{
int a[] = { 0 };
int target = 0;
vector<int> nums(a, a + sizeof(a) / sizeof(a[0]));
cout << "方法调用" << endl;
MylinkedList myLinkedList;
myLinkedList.addAtHead(2);
myLinkedList.addAtHead(22);
myLinkedList.addAtTail(8);
myLinkedList.addAtTail(33);
cout << myLinkedList.get(0) << endl;
cout << myLinkedList.get(4) << endl;
myLinkedList.addAtIndex(2, 44);
myLinkedList.addAtIndex(6, 44);
myLinkedList.deleteAtIndex(4);
myLinkedList.printLinkedList();
return 0;
}
学习到
代码编写过程中
-
- 类成员变量使用'_',变量名前后都可
-
- 要弄清出index(第几个元素,从0开始)与_size(链表中元素个数)的意义
-
代码调试过程中
代码思维
- 代码逻辑:
-
- 写代码之前,一定要弄清出目的,以及实现他需要的东西,条件
-
- 操作前一个节点:删除,添加
-
- 操作当前节点:获取值
-
- 元素个数比最大下标大1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律