将这段代码写完整#include <iostream> using namespace std; #define MAXSIZE 100 typedef struct { int key; char* otherinfo; } ElemType; typedef struct { ElemType* r; int length; } SqList; void BubbleSort(SqList* L) { int m = L->length - 1; int flag = 1; ElemType t; while (m > 0 && flag == 1) { flag = 0; for (int j = 1; j <= m; j++) { if (L->r[j].key > L->r[j + 1].key) { flag = 1; t = L->r[j]; L->r[j] = L->r[j + 1]; L->r[j + 1] = t; } } m--; } } void InsertSort(SqList* L) { for (int i = 2; i <= L->length; i++) { if (L->r[i].key < L->r[i - 1].key) { L->r[0] = L->r[i]; int j; for (j = i - 1; L->r[0].key < L->r[j].key; j--) { L->r[j + 1] = L->r[j]; } L->r[j + 1] = L->r[0]; } } } int main() { int j; SqList L; L.r = new ElemType[MAXSIZE + 1]; L.length = 0; // 初始化 SqList 的 r 数组 for (int i = 1; i <= MAXSIZE; i++) { L.r[i].key = rand(); } L.length = MAXSIZE; printf("排序\n"); printf("****************************************************\n"); printf("* 1-----冒泡排序 *\n"); printf("* 2-----直接插入 *\n"); printf("\n"); while (1) { cout << "\n请选择:\n"; cin >> j; switch (j) { case 1: BubbleSort(&L); cout << "冒泡排序:" << endl; break; case 2: InsertSort(&L); cout << "直接插入:" << endl; break; } } delete[] L.r; // 释放内存 return 0; }
时间: 2024-01-21 10:03:08 浏览: 56
使用include <iostream>时一定要加using namespace std
好的,以下是完整的代码:
```
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct {
int key;
char* otherinfo;
} ElemType;
typedef struct {
ElemType* r;
int length;
} SqList;
void BubbleSort(SqList* L) {
int m = L->length - 1;
int flag = 1;
ElemType t;
while (m > 0 && flag == 1) {
flag = 0;
for (int j = 1; j <= m; j++) {
if (L->r[j].key > L->r[j + 1].key) {
flag = 1;
t = L->r[j];
L->r[j] = L->r[j + 1];
L->r[j + 1] = t;
}
}
m--;
}
}
void InsertSort(SqList* L) {
for (int i = 2; i <= L->length; i++) {
if (L->r[i].key < L->r[i - 1].key) {
L->r[0] = L->r[i];
int j;
for (j = i - 1; L->r[0].key < L->r[j].key; j--) {
L->r[j + 1] = L->r[j];
}
L->r[j + 1] = L->r[0];
}
}
}
int main() {
int j;
SqList L;
L.r = new ElemType[MAXSIZE + 1];
L.length = 0;
// 初始化 SqList 的 r 数组
for (int i = 1; i <= MAXSIZE; i++) {
L.r[i].key = rand();
}
L.length = MAXSIZE;
printf("排序\n");
printf("****************************************************\n");
printf("* 1-----冒泡排序 *\n");
printf("* 2-----直接插入 *\n");
printf("\n");
while (1) {
cout << "\n请选择:\n";
cin >> j;
switch (j) {
case 1:
BubbleSort(&L);
cout << "冒泡排序:" << endl;
for (int i = 1; i <= L.length; i++) {
cout << L.r[i].key << " ";
}
break;
case 2:
InsertSort(&L);
cout << "直接插入:" << endl;
for (int i = 1; i <= L.length; i++) {
cout << L.r[i].key << " ";
}
break;
}
}
delete[] L.r; // 释放内存
return 0;
}
```
这段代码实现了一个可以对随机生成的包含 100 个元素的线性表进行冒泡排序和直接插入排序的程序。其中使用了结构体 `ElemType` 和 `SqList` 来表示线性表,使用了 `BubbleSort` 和 `InsertSort` 函数来实现排序功能。在 `main` 函数中,通过随机生成 100 个元素来初始化线性表,然后通过一个无限循环不断让用户进行选择排序方式的操作。当用户选择排序方式后,程序会调用相应的排序函数对线性表进行排序,并输出排序后的结果。最后,程序会释放动态分配的内存,并返回 0。
阅读全文