#include <iostream> using namespace std; class node{//---------节点(一个数字,和一个指向下一节点的指针,指向空表示其为尾节点 public: int n; node* next; node(int x){ n = x; next = nullptr; } }; class linked_list{ public: node* head = nullptr; void insert(int x, int y){ node* temp = new node(y); if (head == nullptr)//------如果链表中没有元素 head = temp; else{ node* dd = head; node* tt = head;//-------tt去找x的位置,dd指向它的上一个位置 while (tt->next != nullptr && tt->n != x){ dd = tt; tt = tt->next; } if(tt == head && tt->n == x){//--------情况1,x就是第一个元素 head = temp; temp->next = tt; } else if (tt->n == x){//--------情况2,tt找到x了且x不是的一个元素 dd->next = temp; temp->next = tt; } else if (tt->next == nullptr){//-------情况3,没找到x tt->next = temp; } } } void del(int x){ node* tt = head; if (head == nullptr);//--------为空则,不操作 else if(tt->n == x){//------情况1,第一个就是x head = tt->next; delete tt; } else{ while(tt->next != nullptr && tt->next->n != x){//-------找x的上一个元素 tt = tt->next; } if (tt->next->n == x){//------找到了 node* temp = tt; node* temp1 = tt->next; tt = tt->next->next; temp->next = tt; delete temp1; }//---------没找到不操作 } } void print(){ if (head == nullptr) cout << "NULL" << endl; else{ while(head->next != nullptr){ cout << head->n << " "; head = head->next; } cout << head->n; } } }; int main() { int n, x, y; string s; cin >> n; linked_list li; for (int i = 0; i < n; i++){ cin >> s; if (s == "insert"){ cin >> x >> y; li.insert(x, y); } else{ cin >> x; li.del(x); } } li.print(); } // 64 位输出请用 printf("%lld")