类和结构体,在使用指针进行指向的时候,使用堆区的原因:
1、指针定义在栈区,属于局部变量,在作用域结束的时候,自动释放;
2、堆区的内存大,而且在作用域结束的时候,不会被自动释放,适合进行数据的存储
#include<iostream>
#include<string>
#include<vector>
using namespace std;
struct Node {
int val;
Node* next;
Node (int val) {
this->val = val;
next = nullptr;
}
};
class list {
Node* head;
Node* p;
public:
list(vector<int> vec) {
head = new Node(vec[0]);
p = head;
for (int i = 1; i < vec.size(); i++) {
p->next = new Node(vec[i]);
p = p->next;
}
}
//打印函数
void print(Node* head) {
Node* p = head;
while (p) {
p = head;
cout << p->val << endl;
p = p->next;
}
}
//析构函数
~list() {
Node* p = head;
while (p) {
Node* n = p->next;
delete p;
p = n;
}
}
//查找函数
Node* funNode(int vala) {
if (!head) {
return;
}
while (p&& p->val != vala) {
p = p->next;
}
return p;
}
//删除函数
void deleteNode(int vala) {
Node* H = new Node(0);
H->next = head;
Node* slow=H;
Node* fast = H->next;
if (!head) {
return;
}
while (p) {
if (p->val == vala) {
slow->next = fast->next;
break;
}
else {
fast = fast->next;
slow = slow->next;
}
}
}
};