2-7-3 学生顺序表的建立c++
时间: 2023-06-13 19:02:17 浏览: 104
如何在C++中建立一个顺序表
5星 · 资源好评率100%
以下是一个简单的学生顺序表的建立 C 代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 50 // 定义顺序表的最大容量
// 定义学生结构体
typedef struct student {
char name[20]; // 姓名
int age; // 年龄
int grade; // 成绩
} Student;
// 定义顺序表结构体
typedef struct student_table {
Student data[MAX_SIZE]; // 存储数据元素的数组
int length; // 当前长度
} StudentTable;
// 初始化顺序表
void init(StudentTable *table) {
table->length = 0;
}
// 插入元素
void insert(StudentTable *table, int pos, Student s) {
if (pos < 1 || pos > table->length + 1) {
printf("插入位置不合法\n");
return;
}
if (table->length == MAX_SIZE) {
printf("表已满\n");
return;
}
for (int i = table->length; i >= pos; i--) {
table->data[i] = table->data[i-1];
}
table->data[pos-1] = s;
table->length++;
}
// 删除元素
void delete(StudentTable *table, int pos) {
if (pos < 1 || pos > table->length) {
printf("删除位置不合法\n");
return;
}
for (int i = pos; i < table->length; i++) {
table->data[i-1] = table->data[i];
}
table->length--;
}
// 查找元素
int search(StudentTable *table, char name[]) {
for (int i = 0; i < table->length; i++) {
if (strcmp(table->data[i].name, name) == 0) {
return i+1;
}
}
return -1;
}
// 输出顺序表
void print(StudentTable *table) {
printf("姓名\t年龄\t成绩\n");
for (int i = 0; i < table->length; i++) {
printf("%s\t%d\t%d\n", table->data[i].name, table->data[i].age, table->data[i].grade);
}
}
int main() {
StudentTable table;
init(&table);
// 插入元素
Student s1 = {"张三", 18, 90};
insert(&table, 1, s1);
Student s2 = {"李四", 19, 80};
insert(&table, 2, s2);
Student s3 = {"王五", 20, 85};
insert(&table, 3, s3);
// 输出顺序表
print(&table);
// 删除元素
delete(&table, 2);
printf("删除元素后:\n");
print(&table);
// 查找元素
int pos = search(&table, "张三");
if (pos != -1) {
printf("张三的位置:%d\n", pos);
} else {
printf("未找到张三\n");
}
return 0;
}
```
代码中定义了一个 `Student` 结构体,包含三个成员变量:姓名、年龄、成绩。另外还定义了一个 `StudentTable` 结构体,包含一个 `data` 数组和一个 `length` 变量,用于存储顺序表中的元素和当前元素个数。
该程序实现了顺序表的基本操作,包括初始化、插入、删除、查找和输出。用户可以根据需求修改和扩展代码。
阅读全文