#include <iostream> using namespace std; struct list { int data; list* next; }; void insert(list* p, int x, int y) { list* q = p; p = p->next; while (p != NULL) { //插入操作放于循坏外,能够在x值不存在情况下把节点插入最后 if (p->data == x) break; q = p; p = p->next; } list* t = new list(); t->data = y; q->next = t; t->next = p; } void del(list* p, int x) { list* q = p; p = p->next; while (p != NULL) { //如果将删除操作放在循环外,可能删除空列表,因而确定有x再执行删除操作 if (p->data == x) { q->next = p->next; p->next = NULL; delete p; break; } q = p; p = p->next; } } int main() { int n; cin >> n; list* head = new list(); head->next = NULL; while (n--) { // 注意 while 处理多个 case string s; int x, y; cin >> s; if (s == "insert") { cin >> x >> y; insert(head, x, y); } if (s == "delete") { cin >> x; del(head, x); } } list* t = head->next; if (t == NULL) cout << "NULL"; else while (t != NULL) { cout << t->data << " "; t = t->next; } } // 64 位输出请用 printf("%lld")