设节点定义如下
struct Node {
int Element; // 节点中的元素为整数类型
struct Node * Next; // 指向下一个节点
};
从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。
注释那段求指出错误,求解!5555555555555555…
#include <iostream>
#include <algorithm>
using namespace std;
struct Node {
int Element; // 节点中的元素为整数类型
struct Node* Next; // 指向下一个节点
};
typedef struct Node LNode;
typedef struct Node* LinkList;
int main() {
LNode* L;
L = (Node*)malloc(sizeof(Node));
L->Next = NULL;
int num;
for (int i = 0; i < 5; ++i) {
LNode* s= (Node*)malloc(sizeof(Node));
cin >> num;
s->Element = num;
s->Next = L->Next;//头插法
L->Next = s;
}
int arr[5];
int i = 0;
while (L->Next != NULL) {
arr[i++] = L->Next->Element;
L = L->Next;
}
sort(arr, arr + 5);
for (int i = 0; i < 5; ++i) {
if (i == 4)
cout << arr[i] << endl;
else
cout << arr[i] << ' ';
}
/*
while (L->Next != NULL) {
LNode* p = L->Next;
LNode* minp = L->Next;
LNode* pre = L;
while (p != NULL) {
if (minp->Element > p->Next->Element) {
pre = minp;
minp = p->Next;
}
p = p->Next;
}//找到了最小元素指针
cout << minp->Element << ' ';
//将最小元素在链表中删除
pre->Next = minp->Next;
free(minp);
L = L->Next;
}
cout << endl;
*/
}
运行结果