1.用顺序表实现线性表的增、删、查、取值、初始化、展示操作。具体如下:
定义两个结构体,一个是student用于存放学生姓名(name)与年龄(age),另一个是studentList用于存放顺序表的长度(len)与学生信息结构体(student),定义函数:
insertE()函数用于对学生表进行添加。
init()函数用于初始化。
deleteE()函数用于对学生表进行删除。
searchE()函数用于对学生表进行查询。
getE()函数用于对学生表进行取值。
display()函数用于对学生表进行遍历输出。
具体操作如下:
注意:写程序时候,把注释写好。
1.首先自定义三个学生的姓名与性别按顺序添加;其次,添加后在第一个位置插入(“陈波杰”,18)的学生信息,并对所有学生信息进行展示。
2.取出第二位学生的信息,进行打印。
3.通过学生姓名(“陈波杰”),查找出他的年龄,进行打印。
4.删除学生信息表中姓名为(“陈波杰”)的信息,并对所有学生信息进行展示。(提示:没有给出删除的位置,需先找出“陈波杰”的位置,再进行删除)
![](https://profile-avatar.csdnimg.cn/747339608fa244a2a7c59d2fac89b0c7_qq_52484440.jpg!4)
用顺序表实现线性表的增、删、查、取值、初始化、展示操作
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 辞轩. 2023-09-28 17:15关注
以下内容来自ChatGpt:
#include <stdio.h> #include <string.h> // 定义学生结构体 struct student { char name[50]; int age; }; // 定义学生表结构体 struct studentList { int len; struct student students[100]; // 假设最多存放100个学生 }; // 初始化学生表 void init(struct studentList *list) { list->len = 0; } // 添加学生信息 void insertE(struct studentList *list, const char *name, int age) { if (list->len < 100) { // 将新学生信息插入到第一个位置 for (int i = list->len; i > 0; i--) { list->students[i] = list->students[i - 1]; } strcpy(list->students[0].name, name); list->students[0].age = age; list->len++; } else { printf("学生表已满,无法添加。\n"); } } // 删除学生信息 void deleteE(struct studentList *list, const char *name) { int i; for (i = 0; i < list->len; i++) { if (strcmp(list->students[i].name, name) == 0) { for (int j = i; j < list->len - 1; j++) { list->students[j] = list->students[j + 1]; } list->len--; printf("已删除学生信息:%s, %d\n", name, list->students[i].age); return; } } printf("未找到学生信息:%s\n", name); } // 查询学生信息 void searchE(struct studentList *list, const char *name) { for (int i = 0; i < list->len; i++) { if (strcmp(list->students[i].name, name) == 0) { printf("学生信息:%s, %d\n", name, list->students[i].age); return; } } printf("未找到学生信息:%s\n", name); } // 取出学生信息 void getE(struct studentList *list, int position) { if (position >= 0 && position < list->len) { printf("学生信息:%s, %d\n", list->students[position].name, list->students[position].age); } else { printf("位置无效\n"); } } // 遍历并展示学生信息 void display(struct studentList *list) { printf("学生信息列表:\n"); for (int i = 0; i < list->len; i++) { printf("%s, %d\n", list->students[i].name, list->students[i].age); } } int main() { struct studentList list; init(&list); // 添加三名学生信息 insertE(&list, "张三", 20); insertE(&list, "李四", 22); insertE(&list, "王五", 19); // 在第一个位置插入新学生信息 insertE(&list, "陈波杰", 18); // 展示所有学生信息 display(&list); // 取出第二位学生信息 getE(&list, 1); // 通过学生姓名查找年龄 searchE(&list, "陈波杰"); // 删除学生信息 deleteE(&list, "陈波杰"); // 展示所有学生信息 display(&list); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于stm32hal库驱动ft6336触摸屏遇到的问题
- ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
- ¥15 数字信号处理考试111
- ¥100 关于#audobe audition#的问题,如何解决?
- ¥15 allegro17.2生成bom表是空白的
- ¥15 请问一下怎么打通CAN通讯
- ¥20 如何在 rocky9.4 部署 CDH6.3.2?
- ¥35 navicat将excel中的数据导入mysql出错
- ¥15 rt-thread线程切换的问题
- ¥15 高通uboot 打印ubi init err 22