用c语言创建表,实现顺序查找。
时间: 2024-04-29 15:21:46 浏览: 62
可以使用结构体和动态内存分配来创建表,然后实现顺序查找。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_NUM_STUDENTS 100
typedef struct {
int id;
char name[MAX_NAME_LEN];
} Student;
Student* create_student(int id, char* name) {
Student* student = (Student*) malloc(sizeof(Student));
student->id = id;
strncpy(student->name, name, MAX_NAME_LEN);
return student;
}
void print_student(Student* student) {
printf("ID: %d, Name: %s\n", student->id, student->name);
}
int find_student(Student** students, int num_students, int id) {
int i;
for (i = 0; i < num_students; i++) {
if (students[i]->id == id) {
return i;
}
}
return -1;
}
int main() {
Student* students[MAX_NUM_STUDENTS];
int num_students = 0;
// Add some students to the table
students[num_students++] = create_student(1, "Alice");
students[num_students++] = create_student(2, "Bob");
students[num_students++] = create_student(3, "Charlie");
// Find a student by ID
int id_to_find = 2;
int index = find_student(students, num_students, id_to_find);
if (index >= 0) {
printf("Found student at index %d:\n", index);
print_student(students[index]);
} else {
printf("Could not find student with ID %d\n", id_to_find);
}
// Free memory allocated for students
int i;
for (i = 0; i < num_students; i++) {
free(students[i]);
}
return 0;
}
```
在这个示例代码中,`Student` 是一个结构体,包含学生的 ID 和姓名。`create_student()` 函数用于创建一个新的 `Student` 对象。`print_student()` 函数用于打印一个 `Student` 对象的信息。
`find_student()` 函数用于在学生数组中查找指定 ID 的学生。如果找到了,它会返回该学生在数组中的索引;否则返回 -1。
在主函数中,我们创建了一个包含几个学生的数组,并使用 `find_student()` 函数查找 ID 为 2 的学生。最后,我们释放了为学生对象分配的内存。
注意,这个示例代码中使用了动态内存分配,所以在使用完 `Student` 对象后要记得释放内存。
阅读全文