
作业社区
探索学习新天地,共享知识资源!
浪潮君 的学生作业:
#include #include #define MAX 10 // 顺序表最大容量 // 定义学生结构体 struct student { char name[20]; // 学生姓名 int id; // 学号 int age; // 年龄 }; typedef struct student datatype_t; // 定义顺序表结构体 typedef struct { datatype_t buf[MAX]; // 学生数组,最多存 MAX 个学生 int n; // 实际已有学生个数 } seqlist_t; // 判断顺序表是否为空 int is_empty_seqlist(seqlist_t *l) { return (l->n == 0); } // 删除指定学号的学生(按 id 匹配) int delete_data_seqlist(seqlist_t *l, datatype_t data) { if (l == NULL || l->n == 0) { return -1; // 表为空或非法指针 } int i; for (i = 0; i < l->n; i++) { if (l->buf[i].id == data.id) { // 按学号匹配 break; } } if (i == l->n) { return -2; // 未找到该学生 } // 删除元素:将后面元素前移覆盖当前元素 for (int j = i; j < l->n - 1; j++) { l->buf[j] = l->buf[j + 1]; } l->n--; // 删除后学生数量减 1 return 0; // 删除成功 } // 简单主函数演示 int main() { seqlist_t list = { .n = 0 }; // 初始化顺序表为空 // 添加 3 个学生 list.buf[0] = (datatype_t){"张三", 1001, 18}; list.buf[1] = (datatype_t){"李四", 1002, 19}; list.buf[2] = (datatype_t){"王五", 1003, 20}; list.n = 3; // 打印是否为空 if (is_empty_seqlist(&list)) { printf("顺序表为空\n"); } else { printf("顺序表不为空,目前有 %d 个学生\n", list.n); } // 删除学号为 1002 的学生 datatype_t target = {.id = 1002}; int ret = delete_data_seqlist(&list, target); if (ret == 0) { printf("删除成功!\n"); } else { printf("删除失败,错误码:%d\n", ret); } // 打印剩余学生 for (int i = 0; i < list.n; i++) { printf("学生:%s,学号:%d,年龄:%d\n", list.buf[i].name, list.buf[i].id, list.buf[i].age); } return 0; }





浪潮君 的学生作业:
#include #include #define MAX 10 // 学生信息结构体 struct student { char name[20]; int id; int age; }; typedef struct student datatype_t; // 顺序表结构体 typedef struct { datatype_t buf[MAX]; // 学生数组 int n; // 实际学生人数 } seqlist_t; int main() { seqlist_t st; st.n = 0; // 初始化人数为0 // 添加第一个学生 strcpy(st.buf[0].name, "张三"); st.buf[0].id = 1001; st.buf[0].age = 18; st.n++; // 添加第二个学生 strcpy(st.buf[1].name, "李四"); st.buf[1].id = 1002; st.buf[1].age = 19; st.n++; // 获取并打印第一个学生的ID int first_id = st.buf[0].id; printf("第一个学生的ID是:%d\n", first_id); return 0; }




