请大佬帮我优化一下,最后两个测试点总是会超时
查看原帖
请大佬帮我优化一下,最后两个测试点总是会超时
1166429
shixiaoliya楼主2024/7/5 11:31
#include <iostream>

struct Node {
	int data;
	Node* next;

	Node(int data) : data(data), next(nullptr) {}
};

class LinkedList {
private:
	Node* head;

public:
	LinkedList(int data) : head(new Node(data)) {}

	void addNode(int data1, int data2) {
		Node* newNode = new Node(data2);
		Node* tNode = head;
		while (tNode->next != nullptr) {
			if (tNode->data == data1) {
				newNode->next = tNode->next;
				tNode->next = newNode;
				return;
			}
			tNode = tNode->next;
		}
		if (tNode->data == data1) {
			tNode->next = newNode;
		}
	}

	void removeNode(int data) {
		Node* tNode = head;
		Node* pre = head;
        while (tNode->next != nullptr) {
	      	if (tNode->data == data) {
				pre = tNode;
				tNode = tNode->next;
				pre->next = tNode->next;
				delete tNode;
				return;
		    }
			tNode = tNode->next;
		}
	}

	void checkNode(int data) {
		Node* check = head;
		while (check->next != nullptr) {
			if (check->data == data) {
				std::cout << check->next->data << "\n";
				return;
			}
			check = check->next;
		}
		if (check->data == data) {
			std::cout << 0 << "\n";
			return;
		}
	}
};

int main() {
	int times;
	LinkedList list(1);
	std::cin >> times;
	for (int i = 0; i < times; i++) {
		int choice;
		std::cin >> choice;
		switch (choice) {
		case 1:
			int data1, data2;
			std::cin >> data1;
			std::cin >> data2;
			list.addNode(data1, data2);
			break;
		case 2:
			int data;
			std::cin >> data;
			list.checkNode(data);
			break;
		case 3:
			data;
			std::cin >> data;
			list.removeNode(data);
			break;
		}
	}
	return 0;
}
2024/7/5 11:31
加载中...