问题 D: 链表查找(线性表)
时间限制: 1 Sec 内存限制: 128 MB
提交: 63 解决: 53
[提交][状态][讨论版][命题人:外部导入]
题目描述
线性表(a1,a2,a3,…,an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成:
(1) 用最少时间在表中查找数值为x的元素。
(2) 若找到将其与后继元素位置相交换。
(3) 若找不到将其插入表中并使表中元素仍递增有序。
输入
输入:x=3
输入长度:9
输入数据:2 3 5 7 12 15 17 23 45
输出
相同元素为:3
交换后的链表为:2 5 3 7 12 15 17 23 45
样例输入
4 9 2 3 5 7 12 15 17 23 45
样例输出
no 2 3 4 5 7 12 15 17 23 45
#include<iostream>
using namespace std;
int main() {
int x, n, a[10000], p = 0, q = 0;
while (cin >> x >> n) {
for (int i = 0; i < n; i++) {
cin >> a[i];
if (a[i] == x) {
p = i;
}
if (a[i] > x&&a[i - 1] < x) {
q = i;
}
}
if (p) {
int t = a[p];
a[p] = a[p + 1];
a[p + 1] = t;
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
else {
cout << "no" << endl;
for (int i = 0; i < q; i++) {
cout << a[i] << " ";
}
cout << x << " ";
for (int i = q; i < n; i++) {
cout << a[i] << " ";
}
}
cout << endl;
}
return 0;
}