有点舍不得我的原始代码,存档一下。
#include<iostream>
using namespace std;
typedef int ElementType;
typedef struct Node* PtrToNode;
typedef struct Node {
ElementType data;
PtrToNode Next;
}* List;
int main() {
List L = (List)(malloc(sizeof(struct Node)));
List r = L;
for (int i = 0; i < 9; i++) {
List p = (List)(malloc(sizeof(struct Node)));
cin >> p->data;
r->Next = p;
r = p;
}
int X;
cin >> X;
r = L->Next;
bool flag = true;//默认逆序
if (r->data < r->Next->data) flag = false;//false是顺序
List p = (List)(malloc(sizeof(struct Node)));
p->data = X;
r = L->Next;
for (int i = 0; i < 10; i++) {
if ((r->Next->data > X && flag == false) || (r->Next->data < X && flag)) {
p->Next = r->Next;
r->Next = p;
r = p;
break;
}
r = r->Next;
}
r = L->Next;
for (int i = 0; i < 10; i++) {
cout << r->data << endl;
r = r->Next;
}
}
最后发一下神经我好难过因为我拥有比钢筋还直的死脑筋。。。
看了别人写的答案,这一题判断好是顺序还是逆序之后直接把输入的元素放在数组里,用sort排序,最后顺序输出或逆序输出就好了。
而我只会想着找到元素应该插入的位置放进去,最后输出原数组。。一开始用数组没有写好,然后并没有换一种思路,而是想着用链表解。。。一道简单的题写了好长时间,大费周章,情况好的话能用最原始的方法解出来,情况不好遇到了稍难的题目我就完全想不出来,这就是我。