输入n(n>1)个正整数,每次将输入的整数插入到链表头部。-1表示输入结束。再输入一个正整数,在链表中查找该数据并删除对应的节点。要求输出进行删除操作后链表中所有节点的值
时间: 2024-04-08 09:30:07 浏览: 126
链表的基本操作,包括插入数据和删除数据
首先,我们需要定义一个链表节点的结构体:
```
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
然后,我们可以使用一个指针head来表示链表的头节点,每次输入一个正整数时,将其插入到链表头部:
```
ListNode* head = NULL;
int num;
while (cin >> num && num != -1) {
ListNode* node = new ListNode(num);
node->next = head;
head = node;
}
```
最后,我们再输入一个正整数,查找链表中是否存在该节点,并删除对应的节点:
```
int target;
cin >> target;
ListNode* prev = NULL;
ListNode* curr = head;
while (curr) {
if (curr->val == target) {
if (prev) {
prev->next = curr->next;
} else {
head = curr->next;
}
delete curr;
break;
}
prev = curr;
curr = curr->next;
}
```
最后,我们遍历链表,输出所有节点的值:
```
ListNode* curr = head;
while (curr) {
cout << curr->val << " ";
curr = curr->next;
}
```
完整代码如下:
阅读全文