清澈的小白 2023-09-28 16:55 采纳率: 100%
浏览 20
已结题

用顺序表实现线性表的增、删、查、取值、初始化、展示操作

1.用顺序表实现线性表的增、删、查、取值、初始化、展示操作。具体如下:
定义两个结构体,一个是student用于存放学生姓名(name)与年龄(age),另一个是studentList用于存放顺序表的长度(len)与学生信息结构体(student),定义函数:
insertE()函数用于对学生表进行添加。
init()函数用于初始化。
deleteE()函数用于对学生表进行删除。
searchE()函数用于对学生表进行查询。
getE()函数用于对学生表进行取值。
display()函数用于对学生表进行遍历输出。
具体操作如下:
注意:写程序时候,把注释写好。
1.首先自定义三个学生的姓名与性别按顺序添加;其次,添加后在第一个位置插入(“陈波杰”,18)的学生信息,并对所有学生信息进行展示。
2.取出第二位学生的信息,进行打印。
3.通过学生姓名(“陈波杰”),查找出他的年龄,进行打印。
4.删除学生信息表中姓名为(“陈波杰”)的信息,并对所有学生信息进行展示。(提示:没有给出删除的位置,需先找出“陈波杰”的位置,再进行删除)

  • 写回答

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;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 9月28日

悬赏问题

  • ¥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