静态链表直接插入排序代码
时间: 2023-06-20 13:09:12 浏览: 131
以下是静态链表直接插入排序的代码示例:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义静态链表最大长度
struct Node {
int data;
int next;
} SList[MAXSIZE];
int length = 0; // 静态链表长度
// 在静态链表末尾插入一个节点
void insert(int data) {
if (length == MAXSIZE) {
cout << "静态链表已满,无法插入!" << endl;
return;
}
SList[length].data = data;
SList[length].next = -1;
if (length > 0) {
SList[length - 1].next = length;
}
length++;
}
// 打印静态链表
void printList() {
if (length == 0) {
cout << "静态链表为空!" << endl;
return;
}
cout << "静态链表元素为:";
for (int i = 0; i < length; i++) {
cout << SList[i].data << " ";
}
cout << endl;
}
// 静态链表直接插入排序
void insertSort() {
if (length <= 1) {
return;
}
for (int i = 1; i < length; i++) {
int temp = SList[i].data;
int j = i - 1;
while (j >= 0 && SList[j].data > temp) {
SList[j + 1].data = SList[j].data;
j--;
}
SList[j + 1].data = temp;
}
}
int main() {
insert(5);
insert(2);
insert(9);
insert(4);
insert(7);
insert(3);
cout << "排序前:";
printList();
insertSort();
cout << "排序后:";
printList();
return 0;
}
```
以上代码实现了静态链表的插入和打印,以及直接插入排序。在插入排序中,我们使用了类似于数组的方式来操作静态链表。具体来说,在排序过程中,我们通过移动元素的方式来给元素找到它应该插入的位置。
阅读全文