1. 超时,测试点 6/10
#includeusing namespace std; class Node { public: int data; Node* next; }; class List { public: List() { head = NULL; } Node* InsertNodeByIndex(int index, int x); Node* InsertNodeByValue(int x, int y); void DeleteNode(int x); void DisplayList(); Node* head; private: }; Node* List::InsertNodeByIndex(int index, int x) { if (index < 0) return NULL; int curIndex = 1; Node* curNode = head; while (curNode && index > curIndex) { curNode = curNode -> next; curIndex++; } Node* newNode = new Node; newNode -> data = x; if (index == 0) { newNode -> next = head; head = newNode; } else { newNode -> next = curNode -> next; curNode -> next = newNode; } return newNode; } Node* List::InsertNodeByValue(int x, int y) { Node* preNode = NULL; Node* curNode = head; int curIndex = 1; while (curNode && curNode -> data != x) { preNode = curNode; curNode = curNode -> next; curIndex++; } Node* newNode = new Node; newNode -> data = y; //如果链表为空 if (curIndex == 1) { newNode -> next = head; head = newNode; } //链表不为空 else { //如果找到了curNode if (curNode) { preNode -> next = newNode; newNode -> next = curNode; } //没找到curNode else { preNode -> next = newNode; } } return newNode; } void List::DeleteNode(int x) { Node* preNode = NULL; Node* curNode = head; while (curNode && curNode -> data != x) { preNode = curNode; curNode = curNode -> next; } if (curNode) { if (preNode) { preNode -> next = curNode -> next; delete curNode; } else { head = curNode -> next; delete head; } } } void List::DisplayList() { Node* curNode = head; while (curNode != NULL) { cout << curNode -> data << ' '; curNode = curNode -> next; } } int main() { List list; int num; cin >> num; for (int i = 0; i < num; i++) { string s; cin >> s; if (s == "insert") { int x, y; cin >> x >> y; list.InsertNodeByValue(x, y); } else { int value; cin >> value; list.DeleteNode(value); } } if (list.head == NULL) { cout << "NULL"; } else { list.DisplayList(); } return 0; }



