题目内容: 建立长度为n的单链表,n>0,删除单链表中等于给定值的元素。数据类型指定为整型。 输入格式: 第一行为链表长度n; 第二行为链表中的n个数据元素的值; 第三行为需要删除的元素值。 输出格式: 输出为删除后的链表中的所有数据元素的值。 输入样例: 4 45 12 34 8 34 输出样例: 45 12 8
时间: 2024-02-15 08:02:44 浏览: 26
好的,根据题目要求,我们需要先创建一个长度为 n 的单链表,然后再删除等于给定值的元素,最后输出删除后的链表中的所有数据元素的值。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
int main() {
int n;
scanf("%d", &n);
// 创建单链表
struct ListNode *head = malloc(sizeof(struct ListNode));
head->next = NULL;
struct ListNode *cur = head;
for (int i = 0; i < n; i++) {
int val;
scanf("%d", &val);
cur->next = malloc(sizeof(struct ListNode));
cur->next->val = val;
cur->next->next = NULL;
cur = cur->next;
}
// 删除等于给定值的元素
int target;
scanf("%d", &target);
struct ListNode *prev = head;
cur = head->next;
while (cur != NULL) {
if (cur->val == target) {
prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
// 输出删除后的链表中的所有数据元素的值
cur = head->next;
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
// 释放内存
cur = head->next;
while (cur != NULL) {
struct ListNode *temp = cur;
cur = cur->next;
free(temp);
}
free(head);
return 0;
}
```
输入格式:
第一行为链表长度 n;
第二行为链表中的 n 个数据元素的值;
第三行为需要删除的元素值。
输出格式:
输出为删除后的链表中的所有数据元素的值。
输入样例:
4
45 12 34 8
34
输出样例:
45 12 8