输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n(0<n<=9)和一组(n个)整数,建立一个单向链表,再输入一个整数 x,将链表中最后一个与x相等的整数删除。


以下是使用 C 语言实现的代码: ```c #include <stdio.h> #include <stdlib.h> // 链表节点结构体 typedef struct Node { int data; struct Node *next; } Node; // 创建新节点 Node* createNode(int value) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = value; newNode->next = NULL; return newNode; } // 在链表末尾添加节点 void appendNode(Node head, int value) { Node* newNode = createNode(value); if (*head == NULL) { *head = newNode; } else { Node* current = *head; while (current->next!= NULL) { current = current->next; } current->next = newNode; } } // 删除最后一个与指定值相等的节点 void deleteLastMatch(Node head, int x) { Node* current = *head; Node* prev = NULL; Node* toDelete = NULL; int found = 0; while (current!= NULL) { if (current->data == x) { found = 1; toDelete = current; prev = current; } current = current->next; } if (found && toDelete!= *head) { prev->next = toDelete->next; free(toDelete); } else if (found && toDelete == *head) { *head = (*head)->next; free(toDelete); } } // 打印链表 void printList(Node* head) { Node* current = head; while (current!= NULL) { printf("%d ", current->data); current = current->next; } printf("\n"); } // 释放链表内存 void freeList(Node* head) { Node* current = head; Node* temp; while (current!= NULL) { temp = current; current = current->next; free(temp); } } int main() { int repeat; printf("请输入重复次数(0<repeat<10):"); scanf("%d", &repeat); for (int i = 0; i < repeat; i++) { int n, x; Node* head = NULL; printf("请输入整数个数 n(0<n<=9):"); scanf("%d", &n); printf("请输入 %d 个整数:", n); for (int j = 0; j < n; j++) { int num; scanf("%d", &num); appendNode(&head, num); } printf("请输入要删除的整数 x:"); scanf("%d", &x); deleteLastMatch(&head, x); printf("修改后的链表:"); printList(head); freeList(head); } return 0; } ``` 额外需要注意的逻辑点: 1. 在处理链表操作时,要注意内存的分配和释放,避免内存泄漏。 2. 输入数据的合法性检查可以更加完善,比如对于输入的整数范围进行更严格的判断。 3. 对于删除操作,如果链表为空或者没有匹配的元素,需要考虑相应的处理方式。 [2025-03-20 20:46:04 | AI写代码神器 | 801点数解答]
- 题目描述 给定一个长为 nn 的序列 a_1, a_2,a_3, \dots ,a_na 1 ,a 2 ,a 3 ,…,a n ,你需要执行 kk 次操作使这个序列为空。 每次操作可以执行下列内容之一: 选择两个数 i, ji,j,交换 a_i, a_ja i ,a j (需要满足 1 \le i < j \le n1≤i<j≤n)。 选择两个数 i, ji,j,删除 a_i,a_{i+1}, \dots ,a_ja i ,a i+1 ,…,a j (需要满足 1 \le i \le j \le n1≤i≤j≤n,且 a_i = a_ja i =a j )。 请输出最小的操作数 kk。 输入格式 第一行输入一个正整数 tt(1 \le t \le 51≤t≤5),表示有 tt 个测试数据。 对于每个测试数据: 第一行输入一个正整数 nn(1 \le n \le 10^51≤n≤10 5 ),表示序列长度为 nn。 第二行输入 nn 个正整数 a_1,a_2 \dots a_na 1 ,a 2 …a n (0 \le a_i \le 10^90≤a i ≤10 9 )。 输出格式 对于每个测试数据输出一个正整数 kk,表示最少的操作次数。 输入输出样例 输入 #1 复制 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 输出 #1 复制 2 2 说明/提示 数据范围 子任务 分值 限制 11 1010 n\le 3n≤3 22 2020 n\le 10n≤10 33 2020 a_i\le 2a i ≤2 44 1010 保证所有 a_ia i 相等 55 4040 - 对于 100\%100% 的数据,1\le t \le 51≤t≤5,1\le n\le 10^51≤n≤10 5 ,0\le a_i\le 10^90≤a i ≤10 9 。,语言方向:C++,系统环境:Windows(462点数解答 | 2024-12-21 17:35:25)289
- 题目描述 给定一个长为 nn 的序列 a_1, a_2,a_3, \dots ,a_na 1 ,a 2 ,a 3 ,…,a n ,你需要执行 kk 次操作使这个序列为空。 每次操作可以执行下列内容之一: 选择两个数 i, ji,j,交换 a_i, a_ja i ,a j (需要满足 1 \le i < j \le n1≤i<j≤n)。 选择两个数 i, ji,j,删除 a_i,a_{i+1}, \dots ,a_ja i ,a i+1 ,…,a j (需要满足 1 \le i \le j \le n1≤i≤j≤n,且 a_i = a_ja i =a j )。 请输出最小的操作数 kk。 输入格式 第一行输入一个正整数 tt(1 \le t \le 51≤t≤5),表示有 tt 个测试数据。 对于每个测试数据: 第一行输入一个正整数 nn(1 \le n \le 10^51≤n≤10 5 ),表示序列长度为 nn。 第二行输入 nn 个正整数 a_1,a_2 \dots a_na 1 ,a 2 …a n (0 \le a_i \le 10^90≤a i ≤10 9 )。 输出格式 对于每个测试数据输出一个正整数 kk,表示最少的操作次数。 输入输出样例 输入 #1 复制 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 输出 #1 复制 2 2 说明/提示 数据范围 子任务 分值 限制 11 1010 n\le 3n≤3 22 2020 n\le 10n≤10 33 2020 a_i\le 2a i ≤2 44 1010 保证所有 a_ia i 相等 55 4040 - 对于 100\%100% 的数据,1\le t \le 51≤t≤5,1\le n\le 10^51≤n≤10 5 ,0\le a_i\le 10^90≤a i ≤10 9 。,语言方向:C++,系统环境:Windows(812点数解答 | 2024-12-21 17:36:14)349
- 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n(0<n<=9)和一组(n个)整数,建立一个单向链表,再输入一个整数 x,将链表中最后一个与x相等的整数删除。(801点数解答 | 2025-03-20 20:46:04)60
- 题目背景 english statement. you must submit your code at the chinese version of the statement. 题目描述 给定一个长为 𝑛 n 的序列 𝑎 1 , 𝑎 2 , 𝑎 3 , … , 𝑎 𝑛 a 1 ,a 2 ,a 3 ,…,a n ,你需要执行 𝑘 k 次操作使这个序列为空。 每次操作可以执行下列内容之一: 选择两个数 𝑖 , 𝑗 i,j,交换 𝑎 𝑖 , 𝑎 𝑗 a i ,a j (需要满足 1 ≤ 𝑖 < 𝑗 ≤ 𝑛 1≤i<j≤n)。 选择两个数 𝑖 , 𝑗 i,j,删除 𝑎 𝑖 , 𝑎 𝑖 + 1 , … , 𝑎 𝑗 a i ,a i+1 ,…,a j (需要满足 1 ≤ 𝑖 ≤ 𝑗 ≤ 𝑛 1≤i≤j≤n,且 𝑎 𝑖 = 𝑎 𝑗 a i =a j )。 请输出最小的操作数 𝑘 k。 输入格式 第一行输入一个正整数 𝑇 t( 1 ≤ 𝑇 ≤ 5 1≤t≤5),表示有 𝑇 t 个测试数据。 对于每个测试数据: 第一行输入一个正整数 𝑛 n( 1 ≤ 𝑛 ≤ 1 0 5 1≤n≤10 5 ),表示序列长度为 𝑛 n。 第二行输入 𝑛 n 个正整数 𝑎 1 , 𝑎 2 … 𝑎 𝑛 a 1 ,a 2 …a n ( 0 ≤ 𝑎 𝑖 ≤ 1 0 9 0≤a i ≤10 9 )。 输出格式 对于每个测试数据输出一个正整数 𝑘 k,表示最少的操作次数。 输入输出样例 输入 #1复制 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 输出 #1复制 2 2 说明/提示 数据范围 子任务 分值 限制 1 1 10 10 𝑛 ≤ 3 n≤3 2 2 20 20 𝑛 ≤ 10 n≤10 3 3 20 20 𝑎 𝑖 ≤ 2 a i ≤2 4 4 10 10 保证所有 𝑎 𝑖 a i 相等 5 5 40 40 - 对于 100 % 100%,语言方向:C++,系统环境:Linux,代码风格:时间复杂度优先(331点数解答 | 2024-12-21 16:26:29)190
- 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n (1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。 要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。 输出格式:数据直接以空格分隔,最后的一个数据后面没有空格。 输入输出示例:括号内为说明,无需输入输出(363点数解答 | 2024-11-30 15:11:16)179
- 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。 要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。(254点数解答 | 2024-11-30 13:34:49)118
- 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。 要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。(598点数解答 | 2024-11-30 13:35:30)300
- 输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。 要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。(442点数解答 | 2024-12-02 15:48:45)186
- c++描述 小夏同学在思考一个复杂的问题: 输入 m,a,n,请输出 ( i=1 ∑ n a i )modm,即 (a+a 2 +⋯+a n )modm。 说明/提示 对于所有测试数据,保证:1≤m,a≤10 9 ,1≤n≤10 15 。 测试点编号 n a 特殊性质 1−3 ≤10 7 ≤10 9 无 4−6 ≤10 15 ≤2 无 7−10 ≤10 15 ≤10 9 m 为质数 11−20 ≤10 15 ≤10 9 无 输入描述 输入 m,a,n。 输出描述 输出 ( i=1 ∑ n a i )modm。 用例输入 1 1000 2 10 用例输出 1 46 用例输入 2 11451410 1919811 8765423561347 用例输出 2 2213137 用例输入 3 114514 9999 1000 用例输出 3 28840(911点数解答 | 2025-03-29 19:12:07)165
- # 「alfr round 3」b swap & delete ## 题目背景 [english statement](https://www.luogu.com.cn/problem/u517304). you must submit your code at the chinese version of the statement. ## 题目描述 给定一个长为 $n$ 的序列 $a_1, a_2,a_3, \dots ,a_n$,你需要执行 $k$ 次操作使这个序列为空。 每次操作可以执行下列内容之一: 1. 选择两个数 $i, j$,交换 $a_i, a_j$(需要满足 $1 \le i < j \le n$)。 2. 选择两个数 $i, j$,删除 $a_i,a_{i+1}, \dots ,a_j$(需要满足 $1 \le i \le j \le n$,且 $a_i = a_j$)。 请输出最小的操作数 $k$。 ## 输入格式 第一行输入一个正整数 $t$($1 \le t \le 5$),表示有 $t$ 个测试数据。 对于每个测试数据: 第一行输入一个正整数 $n$($1 \le n \le 10^5$),表示序列长度为 $n$。 第二行输入 $n$ 个正整数 $a_1,a_2 \dots a_n$($0 \le a_i \le 10^9$)。 ## 输出格式 对于每个测试数据输出一个正整数 $k$,表示最少的操作次数。 ## 样例 #1 ### 样例输入 #1 ``` 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 ``` ### 样例输出 #1 ``` 2 2 ``` ## 提示 ### 数据范围 | 子任务 | 分值 | 限制 | | :----------: | :----------: | :----------: | | $1$ | $10$ | $n\le 3$ | | $2$ | $20$ | $n\le 10$ | | $3$ | $20$ | $a_i\le 2$ | | $4$ | $10$ | 保证所有 $a_i$ 相等 | | $5$ | $40$ | - | 对于 $100\%$ 的数据,$1\le t \le 5$,$1\le n\(637点数解答 | 2024-12-21 14:56:50)210
- # 「alfr round 3」b swap & delete ## 题目背景 [english statement](https://www.luogu.com.cn/problem/u517304). you must submit your code at the chinese version of the statement. ## 题目描述 给定一个长为 $n$ 的序列 $a_1, a_2,a_3, \dots ,a_n$,你需要执行 $k$ 次操作使这个序列为空。 每次操作可以执行下列内容之一: 1. 选择两个数 $i, j$,交换 $a_i, a_j$(需要满足 $1 \le i < j \le n$)。 2. 选择两个数 $i, j$,删除 $a_i,a_{i+1}, \dots ,a_j$(需要满足 $1 \le i \le j \le n$,且 $a_i = a_j$)。 请输出最小的操作数 $k$。 ## 输入格式 第一行输入一个正整数 $t$($1 \le t \le 5$),表示有 $t$ 个测试数据。 对于每个测试数据: 第一行输入一个正整数 $n$($1 \le n \le 10^5$),表示序列长度为 $n$。 第二行输入 $n$ 个正整数 $a_1,a_2 \dots a_n$($0 \le a_i \le 10^9$)。 ## 输出格式 对于每个测试数据输出一个正整数 $k$,表示最少的操作次数。 ## 样例 #1 ### 样例输入 #1 ``` 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 ``` ### 样例输出 #1 ``` 2 2 ``` ## 提示 ### 数据范围 | 子任务 | 分值 | 限制 | | :----------: | :----------: | :----------: | | $1$ | $10$ | $n\le 3$ | | $2$ | $20$ | $n\le 10$ | | $3$ | $20$ | $a_i\le 2$ | | $4$ | $10$ | 保证所有 $a_i$ 相等 | | $5$ | $40$ | - | 对于 $100\%$ 的数据,$1\le t \le 5$,$1\le n\(969点数解答 | 2024-12-21 14:56:57)224
- # 「alfr round 3」b swap & delete ## 题目背景 [english statement](https://www.luogu.com.cn/problem/u517304). you must submit your code at the chinese version of the statement. ## 题目描述 给定一个长为 $n$ 的序列 $a_1, a_2,a_3, \dots ,a_n$,你需要执行 $k$ 次操作使这个序列为空。 每次操作可以执行下列内容之一: 1. 选择两个数 $i, j$,交换 $a_i, a_j$(需要满足 $1 \le i < j \le n$)。 2. 选择两个数 $i, j$,删除 $a_i,a_{i+1}, \dots ,a_j$(需要满足 $1 \le i \le j \le n$,且 $a_i = a_j$)。 请输出最小的操作数 $k$。 ## 输入格式 第一行输入一个正整数 $t$($1 \le t \le 5$),表示有 $t$ 个测试数据。 对于每个测试数据: 第一行输入一个正整数 $n$($1 \le n \le 10^5$),表示序列长度为 $n$。 第二行输入 $n$ 个正整数 $a_1,a_2 \dots a_n$($0 \le a_i \le 10^9$)。 ## 输出格式 对于每个测试数据输出一个正整数 $k$,表示最少的操作次数。 ## 样例 #1 ### 样例输入 #1 ``` 2 5 1 2 3 2 3 3 1000000000 1000000000 99999999 ``` ### 样例输出 #1 ``` 2 2 ``` ## 提示 ### 数据范围 | 子任务 | 分值 | 限制 | | :----------: | :----------: | :----------: | | $1$ | $10$ | $n\le 3$ | | $2$ | $20$ | $n\le 10$ | | $3$ | $20$ | $a_i\le 2$ | | $4$ | $10$ | 保证所有 $a_i$ 相等 | | $5$ | $40$ | - | 对于 $100\%$ 的数据,$1\le t \le 5$,$1\le n\(1279点数解答 | 2024-12-21 14:57:07)277