第七题代码:
#include <iostream>
struct node {
int data;
struct node *next;
};
int main() {
int input[] = {9, 31, 26, 19, 1, 13, 2, 11, 27, 16, 5, 21};
node *hash_table[12] = {};
// insert all elements into hash table
for (int i = 0; i < 12; i++) {
int index = input[i] % 12;
if (hash_table[index] == nullptr) {
hash_table[index] = new node({input[i], nullptr});
} else {
node *temp = hash_table[index];
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = new node({input[i], nullptr});
}
}
return 0;
}
第八题代码:
#include <stdio.h>
int main() {
int a[] = {1, 2, 4, 5, 2, 6, 3};
int n = 7;
int aim_index = 0;
for (int i = 0; i < n; i++) {
if (a[i] < a[n - 1]) {
aim_index++;
}
}
printf("the right index is %d\n", aim_index);
}
第九题:
适用于计数排序的数据表的定义:
数据表 A 的关键码互不相同,且之间可以比较
代码:
#include <bits/stdc++.h>
int main() {
int input[] = {9, 31, 26, 19, 1, 13, 2, 11, 27, 16, 5, 21};
int dest[15] = {};
int cc;
for (int i = 0; i < 12; i++) {
cc = 0;
for (int j = 0; j < 12; j++) {
if (input[j] < input[i]) {
cc++;
}
}
dest[cc] = input[i];
}
for (int i = 0; i < 12; i++) {
std::cout << dest[i] << " ";
}
}