#include <iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
Node* head = new Node; //先生成头结点
void init()
{
//带头结点的头插法
head->next = nullptr;
for (int i = 10; i >= 1; i--)
{
Node* temp = new Node;
temp->data = i;
temp->next = head->next;
head->next = temp;
}
}
void del(int x)
{
Node* befor = head;//找到一个节点存放当前节点的前驱
Node* T = head->next;
while (T != nullptr)
{
if (T->data == x) {
//找到了
Node* temp = T;//至于为什么要保存时因为要消除对temp的引用
befor->next = T->next;
delete temp;//方便这里删除
return;//结束
}
befor = T;//只能从前驱找到后继
T = T->next;
}
}
void insert(int x)
{
Node* temp = new Node;
temp->data = x;
temp->next = head->next;
head->next = temp;
}
void show()
{
Node* yy = head->next;
while (yy != nullptr)
{
cout << yy->data << " ";
yy = yy->next;
}
cout << endl;
}
int main()
{
init();
int n;
cin >> n;
while (n--)
{
int x; cin >> x;
del(x);
insert(x);
show();
}
return 0;
}
小王子单链表
最新推荐文章于 2024-05-21 21:20:55 发布