20250305-Rain
1. 链表
#include <iostream>
using namespace std;
class Node
{
public:
int val; // 当前节点存储的值
Node *next; // 下一个节点
typedef Node *List; // List表示头结点, List->next是第一个存储数据的节点
public:
/*
List createList()
{
}
*/
// 构造函数
Node() : val(0), next(nullptr) {};
// 添加到头部
void addAtHead(int val)
{
Node *newNode = new Node();
newNode->val = val;
newNode->next = this->next;
this->next = newNode;
}
// 添加到尾部
void addAtTail(int val)
{
Node *newNode = new Node();
newNode->val = val;
Node *q = this;
while (q->next)
{
q = q->next;
}
q->next = newNode;
}
// 指定索引插入
void addAtIndex(int index, int val)
{
Node *p = this;
for (int i = 0; i < index; i++)
{
// idx exceed socope
if (!p->next)
{
return;
}
p = p->next;
}
Node *newNode = new Node();
newNode->val = val;
newNode->next = p->next;
p->next = newNode;
}
// 指定索引删除
void deleteAtIndex(int index)
{
Node *p = this;
for (int i = 0; i < index; i++)
{
// idx exceed socope
if (!p->next)
{
return;
}
p = p->next;
}
if (p->next)
{
// 删除 temp 节点
Node *temp = p->next;
p->next = temp->next;
delete temp;
}
}
// 打印结点
void SListPrint()
{
Node *q = this->next;
while (q)
{
std::cout << q->val << ' ';
q = q->next;
}
cout << endl;
}
};
int main()
{
Node list;
list.addAtHead(1);
list.addAtTail(2);
list.addAtTail(3);
list.addAtTail(4);
list.addAtIndex(3, 5);
list.addAtHead(6);
list.SListPrint();
list.deleteAtIndex(3);
list.SListPrint();
// 样例输出 :
// 6 1 2 5 3 4
// 6 1 5 3 4
return 0;
}2. 控制台
3. EasyX

Last updated