【问题描述】 从键盘输出不超过20个数字组成的顺序表,指定某个元素后,输出该元素的直接前驱和直接后继。如果指定元素不存在,打印错误。如果该元素没有前驱或没有后继,用null代替。 【输入形式】 第一行:以逗号“,”分隔的一组数列; 第二行:指定元素。 【输出形式】 以“,”分隔的两个数字,前驱在前,后继在后 【样例输入】 2,7,4,6,9,13,45,37,3 9 【样例输出】 6,13 【样例输入】 2 2 【样例输出】 null,ull 【样例输入】 2 3 【样例输出】 ERROR: 3 is not in the list! 【样例输入】 2,7,4,6,9,13,7,45,37,3 7 【样例输出】 2,4 13,45。给出c语言代码
时间: 2024-04-16 12:29:34 浏览: 8
以下是用C语言实现上述问题的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[20];
int size, target;
char input[100];
// 读取数列
printf("请输入以逗号分隔的一组数列:\n");
fgets(input, sizeof(input), stdin);
// 解析数列
int i = 0;
char *token = strtok(input, ",");
while (token != NULL) {
arr[i++] = atoi(token);
token = strtok(NULL, ",");
}
size = i;
// 读取目标元素
printf("请输入指定元素:\n");
fgets(input, sizeof(input), stdin);
target = atoi(input);
// 查找目标元素的位置
int pos = -1;
for (i = 0; i < size; i++) {
if (arr[i] == target) {
pos = i;
break;
}
}
// 输出结果
if (pos == -1) {
printf("ERROR: %d is not in the list!\n", target);
} else {
int predecessor = (pos > 0) ? arr[pos - 1] : -1;
int successor = (pos < size - 1) ? arr[pos + 1] : -1;
printf("%d,%d\n", predecessor, successor);
}
return 0;
}
```
你可以将这段代码保存为一个文件(例如`main.c`),使用C编译器进行编译运行。输入数列和指定元素后,程序将输出结果。希望对你有帮助!