单链表实现删除当前结点,内存出错了
才不是本人 2018-11-15 06:51:15 #include <iostream>
#include <algorithm>
using namespace std;
template < typename T>
class Node{
public:
~Node();
Node<T>* next{nullptr};
T data;
};
template <typename T>
Node<T>::~Node()
{
delete next;
next = nullptr;
}
template <typename T>
void insert(Node<T>* s, T data)
{
if(s == nullptr) return;
Node<T>* p = new Node<T>();
p->next = s->next;
s->next = p;
p->data = s->data;
s->data = data;
}
template <typename T>
void erase(Node<T>* s)
{
if(s == nullptr || s->next == nullptr) return;
Node<T>* p = s->next;
s->data = p->data;
s->next = p->next;
delete p;
p = nullptr;
}
int main()
{
auto head = new Node<int>();
head->data = -1;
auto t = new Node<int>();
head->next = t;
t->data = 4;
insert(t, 8);
insert(t, 9);
insert(t, 5);
insert(t, 1);
Node<int>* s = head;
while(s)
{
cout<< s <<":"<<s->data <<" ";
s = s->next;
}
cout << endl;
Node<int>* p = head->next;
erase(p);
Node<int>* x = head;
while(x)
{
cout<< x <<":"<<x->data <<" ";
x = x->next;
}
cout << endl;
return 0;
}