社区讨论

大佬求调

B3631单向链表参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@miv9gh54
此快照首次捕获于
2025/12/07 13:07
2 个月前
此快照最后确认于
2025/12/09 23:50
2 个月前
查看原帖
大佬求调!
帮我看看代码有什么毛病
AI都没用
CPP
#include <bits/stdc++.h>
using namespace std;
struct node {
	int data;
	node *next;
	node() : data(0), next(nullptr) {}
	node(int val) : data(val), next(nullptr) {}
};
node *lastFound = nullptr;
node *getNode(node *head, int pos) {
	if (pos == 0 || head == nullptr) {
		return nullptr;
	}
	if (lastFound != nullptr && lastFound->data == pos) {
		return lastFound;
	}
	node *curr = head;
	while (curr != nullptr && curr->data != pos) {
		curr = curr->next;
	}
	lastFound = curr;
	return curr;
}
void insert(node *head, int pos, int data) {
	node *newNode = new node(data);
	node *curr = getNode(head, pos);
	if (curr == nullptr) {
		return;
	}
	newNode->next = curr->next;
	curr->next = newNode;
}
void remove(node *head, int data) {
	node *curr = getNode(head, data);
	if (curr == nullptr || curr->next == nullptr) {
		return;
	}
	node *temp = curr->next;
	curr->next = temp->next;
	delete temp;
	temp = nullptr;
}
void print(node *head) {
	node *curr = head;
	while (curr != nullptr) {
		cout << curr->data << " ";
		curr = curr->next;
	}
	cout << "\n";
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);
	cin.rdbuf()->pubsetbuf(nullptr, 0);
	cout.rdbuf()->pubsetbuf(nullptr, 0);
	
	int n;
	cin >> n;
	node *head = new node(1);
	lastFound = head;
	//head->next = new node(2); head->next->next = new node(3);
	while (n--) {
		int id;
		cin >> id;
		if (id == 1) {
			int x, y;
			cin >> x >> y;
			insert(head, x, y);
		} else if (id == 2) {
			int x;
			cin >> x;
			node *curr = getNode(head, x);
			if (curr == nullptr || curr->next == nullptr) {
				cout << "0\n";
				continue;
			}
			cout << curr->next->data << "\n";
		} else if (id == 3) {
			int x;
			cin >> x;
			remove(head, x);
		}
	}
	//print(head);
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...