数据布局(Day16)

[复制链接]
发表于 2026-1-21 04:43:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、学习内容

1、有关次序表的利用(功能函数)

1、创建次序表
  1. Plist create_list(){
  2.         Plist L = malloc(sizeof(list));  // 为顺序表分配内存空间
  3.         if(NULL == L){
  4.                 printf("申请空间失败\n");
  5.                 return NULL;  // 如果内存分配失败,返回 NULL
  6.         }
  7.         L->len = 0;  // 初始化表的长度为0
  8.         printf("创建成功\n");
  9.         return L;  // 返回顺序表的指针
  10. }
复制代码
2、次序表的判满
  1. int full(Plist L){
  2.         if(L->len == MAX){  // 如果学生数量等于最大容量,返回1表示已满
  3.                 return 1;
  4.         }
  5.         return 0;
  6. }
复制代码
3、次序表的判空
  1. int empty(Plist L){
  2.         if(L->len == 0){  // 如果表长为0,表示顺序表为空
  3.                 return 1;
  4.         }
  5.         return 0;
  6. }
复制代码
4、次序表增长数据
  1. int input_list(Plist L){
  2.         int n;
  3.         printf("要输入学生的个数:\n");
  4.         scanf("%d",&n);  // 输入学生数量
  5.         for(int i=0; i<n; i++){
  6.                 printf("请输入第%d个学生信息:", i+1);
  7.                 printf("请输入学号:");
  8.                 scanf("%d",&L->data[i].id);  // 输入学号
  9.                 printf("请输入姓名:");
  10.                 scanf("%s",L->data[i].name);  // 输入姓名
  11.                 printf("请输入专业:");
  12.                 scanf("%s",L->data[i].major);  // 输入专业
  13.                 printf("请输入年龄:");
  14.                 scanf("%d",&L->data[i].age);  // 输入年龄
  15.                 L->len++;  // 学生数量增加
  16.         }
  17.         return 0;
  18. }
复制代码
5、次序表的遍历
  1. int output_list(Plist L){
  2.         for(int i=0; i<L->len; i++){
  3.                 // 按格式输出每个学生的信息
  4.                 printf("学号:%d\t姓名:%s\t专业:%s\t年龄:%d\n",L->data[i].id,L->data[i].name,L->data[i].major,L->data[i].age);
  5.         }
  6.         return 0;
  7. }
复制代码
6、次序表恣意位置插入数据
  1. int insert_stu(Plist L, int pos, student e){
  2.         int sub = pos -1;  // 转换为数组下标
  3.         if(sub<0 || sub>L->len || L==NULL || full(L)){  // 检查插入位置合法性和顺序表是否已满
  4.                 printf("插入失败\n");
  5.                 return -1;
  6.         }
  7.         for(int i=L->len-1; i>=sub; i--){  // 将元素后移,给插入新学生腾出位置
  8.                 L->data[i+1] = L->data[i];
  9.         }
  10.         L->data[sub] = e;  // 插入新学生信息
  11.         L->len++;  // 学生数量增加
  12.         printf("插入成功\n");
  13.         return 0;
  14. }
复制代码
7、 次序表恣意位置删除利用
  1. int delete_stu(Plist L, int pos){
  2.         int sub = pos - 1;  // 转换为数组下标
  3.         if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 检查删除位置合法性和是否为空表
  4.                 printf("删除失败\n");
  5.                 return -1;
  6.         }
  7.         for(int i=sub; i<L->len; i++){  // 将后面的元素前移,覆盖要删除的元素
  8.                 L->data[i] = L->data[i+1];
  9.         }
  10.         L->len--;  // 学生数量减少
  11.         printf("删除成功\n");
  12.         return 0;
  13. }
复制代码
8、按位置修改函数
  1. int change_stu(Plist L, int pos, student e){
  2.         int sub = pos - 1;  // 转换为数组下标
  3.         if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 检查修改位置合法性和是否为空表
  4.                 printf("查找失败\n");
  5.                 return -1;
  6.         }else{
  7.                 // 修改学生信息
  8.                 L->data[sub] = e;
  9.                 printf("修改成功\n");
  10.                 return 0;
  11.         }
  12. }
复制代码
9、按值修改函数
  1. int delete_stu(Plist L, int pos){
  2.         int sub = pos - 1;  // 转换为数组下标
  3.         if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 检查删除位置合法性和是否为空表
  4.                 printf("删除失败\n");
  5.                 return -1;
  6.         }
  7.         for(int i=sub; i<L->len; i++){  // 将后面的元素前移,覆盖要删除的元素
  8.                 L->data[i] = L->data[i+1];
  9.         }
  10.         L->len--;  // 学生数量减少
  11.         printf("删除成功\n");
  12.         return 0;
  13. }
复制代码
10、 按值查找返回位置
  1. int find_stu_all(Plist L, char key[20]){
  2.         int i, sub = -1;
  3.         for(i=0; i<L->len; i++){
  4.                 // 输出所有符合条件的学生信息
  5.                 if(strcmp(L->data[i].name, key) == 0){
  6.                         printf("位置:%d\t是%s\n",i+1,L->data[i].name);
  7.                         sub = i;
  8.                 }
  9.         }
  10.         if(sub == -1){
  11.                 return -1;  // 没有找到则返回 -1
  12.         }
  13.         return sub + 1;
  14. }
复制代码
11、查找指定位置上的元素
  1. int find_stu(Plist L, char key[20]){
  2.         int i, sub = -1;
  3.         for(i=0; i<L->len; i++){
  4.                 // 找到符合条件的学生
  5.                 if(strcmp(L->data[i].name, key) == 0){
  6.                         sub = i;  // 记录找到的位置
  7.                 }
  8.         }
  9.         if(sub == -1){
  10.                 return -1;  // 没有找到则返回 -1
  11.         }
  12.         return sub + 1;  // 返回学生在表中的位置,位置从1开始计数
  13. }
复制代码
12、次序表去重
  1. nt delete_repeat(Plist L){
  2.         int i, j;
  3.         for(i=0; i<L->len; i++){
  4.                 for(j=i+1; j<L->len; j++){
  5.                         // 如果发现两个学生姓名相同,则删除后者
  6.                         if(strcmp(L->data[i].name, L->data[j].name) == 0){
  7.                                 delete_stu(L, j+1);  // 删除重复的学生信息
  8.                                 j--;  // 调整索引,继续检查下一个
  9.                         }
  10.                 }
  11.         }
  12.         return 0;
  13. }
复制代码
 

二、作业

制作部分门生管理体系

实现的功能有:
1、输入门生信息
2、恣意位置插入一个门生
3、恣意位置删除一个门生
4、恣意位置查找一个门生
5、恣意位置修改一个门生
6、表头插入一个门生
7、表尾插入一个门生
8、表头删除一个门生
t9、表尾删除一个门生
10、去除重复的门生
11、按照姓名查找返回位置
12、查找输出全部的门生
代码解答 :

头文件:
  1. #ifndef LIST_H_  // 防止头文件被重复包含,定义预处理宏 LIST_H_
  2. #define LIST_H_
  3. #include <myhead.h>  // 包含自定义头文件 "myhead.h"
  4. #define MAX 30  // 定义顺序表的最大容量为 30,表示最多可以存储 30 个学生信息
  5. // 定义学生信息的结构体
  6. typedef struct {
  7.     int id;             // 学号,用整数表示
  8.     char name[20];      // 姓名,最多存储 20 个字符
  9.     char major[20];     // 专业,最多存储 20 个字符
  10.     int age;            // 年龄,用整数表示
  11. } student;  // 结构体类型 student,用于表示单个学生的信息
  12. // 定义顺序表的结构体
  13. typedef struct {
  14.     student data[MAX];  // 存储学生信息的数组,最多包含 MAX 个 student 结构体
  15.     int len;            // 统计学生个数,表示顺序表中当前已存储的学生数量
  16. } list, *Plist;  // 定义顺序表类型 list,并定义 Plist 为指向 list 结构体的指针类型
  17. // 函数声明区域
  18. // 创建一个顺序表并返回指向该表的指针
  19. Plist create_list();
  20. // 输入学生信息并存储到顺序表中
  21. int input_list(Plist);
  22. // 输出顺序表中的所有学生信息
  23. int output_list(Plist);
  24. // 判断顺序表是否已满(即学生数量是否达到 MAX)
  25. int full(Plist);
  26. // 在顺序表的指定位置插入一个学生信息
  27. int insert_stu(Plist, int, student);
  28. // 判断顺序表是否为空
  29. int empty(Plist);
  30. // 删除顺序表中指定位置的学生
  31. int delete_stu(Plist, int);
  32. // 查找顺序表中指定位置的学生
  33. int inserach_stu(Plist, int);
  34. // 修改顺序表中指定位置的学生信息
  35. int change_stu(Plist, int, student);
  36. // 在顺序表的表头插入一个学生
  37. int insert_front(Plist, student);
  38. // 在顺序表的表尾插入一个学生
  39. int insert_rear(Plist, student);
  40. // 删除顺序表的表头学生
  41. int delete_front(Plist);
  42. // 删除顺序表的表尾学生
  43. int delete_rear(Plist);
  44. // 删除顺序表中重复的学生信息
  45. int delete_repeat(Plist);
  46. // 根据学生姓名查找并返回其在顺序表中的位置
  47. int find_stu(Plist, char *);
  48. // 根据学生姓名查找并输出所有符合条件的学生信息
  49. int find_stu_all(Plist, char *);
  50. #endif  // 结束宏定义 LIST_H_
复制代码
函数文件:
  1. #include "list.h"// 创建次序表,分配内存并初始化表长为0
  2. Plist create_list(){
  3.         Plist L = malloc(sizeof(list));  // 为顺序表分配内存空间
  4.         if(NULL == L){
  5.                 printf("申请空间失败\n");
  6.                 return NULL;  // 如果内存分配失败,返回 NULL
  7.         }
  8.         L->len = 0;  // 初始化表的长度为0
  9.         printf("创建成功\n");
  10.         return L;  // 返回顺序表的指针
  11. }// 输入门生信息并存储到次序表中
  12. int input_list(Plist L){
  13.         int n;
  14.         printf("要输入学生的个数:\n");
  15.         scanf("%d",&n);  // 输入学生数量
  16.         for(int i=0; i<n; i++){
  17.                 printf("请输入第%d个学生信息:", i+1);
  18.                 printf("请输入学号:");
  19.                 scanf("%d",&L->data[i].id);  // 输入学号
  20.                 printf("请输入姓名:");
  21.                 scanf("%s",L->data[i].name);  // 输入姓名
  22.                 printf("请输入专业:");
  23.                 scanf("%s",L->data[i].major);  // 输入专业
  24.                 printf("请输入年龄:");
  25.                 scanf("%d",&L->data[i].age);  // 输入年龄
  26.                 L->len++;  // 学生数量增加
  27.         }
  28.         return 0;
  29. }// 输出次序表中的全部门生信息
  30. int output_list(Plist L){
  31.         for(int i=0; i<L->len; i++){
  32.                 // 按格式输出每个学生的信息
  33.                 printf("学号:%d\t姓名:%s\t专业:%s\t年龄:%d\n",L->data[i].id,L->data[i].name,L->data[i].major,L->data[i].age);
  34.         }
  35.         return 0;
  36. }// 判断次序表是否已满
  37. int full(Plist L){
  38.         if(L->len == MAX){  // 如果学生数量等于最大容量,返回1表示已满
  39.                 return 1;
  40.         }
  41.         return 0;
  42. }// 在次序表的指定位置插入一个门生信息
  43. int insert_stu(Plist L, int pos, student e){
  44.         int sub = pos -1;  // 转换为数组下标
  45.         if(sub<0 || sub>L->len || L==NULL || full(L)){  // 检查插入位置合法性和顺序表是否已满
  46.                 printf("插入失败\n");
  47.                 return -1;
  48.         }
  49.         for(int i=L->len-1; i>=sub; i--){  // 将元素后移,给插入新学生腾出位置
  50.                 L->data[i+1] = L->data[i];
  51.         }
  52.         L->data[sub] = e;  // 插入新学生信息
  53.         L->len++;  // 学生数量增加
  54.         printf("插入成功\n");
  55.         return 0;
  56. }// 判断次序表是否为空
  57. int empty(Plist L){
  58.         if(L->len == 0){  // 如果表长为0,表示顺序表为空
  59.                 return 1;
  60.         }
  61.         return 0;
  62. }// 删除次序表中指定位置的门生信息
  63. int delete_stu(Plist L, int pos){
  64.         int sub = pos - 1;  // 转换为数组下标
  65.         if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 检查删除位置合法性和是否为空表
  66.                 printf("删除失败\n");
  67.                 return -1;
  68.         }
  69.         for(int i=sub; i<L->len; i++){  // 将后面的元素前移,覆盖要删除的元素
  70.                 L->data[i] = L->data[i+1];
  71.         }
  72.         L->len--;  // 学生数量减少
  73.         printf("删除成功\n");
  74.         return 0;
  75. }// 查找次序表中指定位置的门生信息int inserach_stu(Plist L, int pos){        int sub = pos - 1;  // 转换为数组下标        if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 查抄查找位置正当性和是否为空表                printf("查找失败\n");                return -1;        }else{                // 输出找到的门生信息                printf("该门生存在\n");                printf("学号:%d\t姓名:%s\t专业:%s\t年事:%d\n",L->data[sub].id,L->data[sub].name,L->data[sub].major,L->data[sub].age);                return 0;        }}// 修改次序表中指定位置的门生信息
  76. int change_stu(Plist L, int pos, student e){
  77.         int sub = pos - 1;  // 转换为数组下标
  78.         if(sub < 0 || sub > L->len-1 || L == NULL || empty(L)){  // 检查修改位置合法性和是否为空表
  79.                 printf("查找失败\n");
  80.                 return -1;
  81.         }else{
  82.                 // 修改学生信息
  83.                 L->data[sub] = e;
  84.                 printf("修改成功\n");
  85.                 return 0;
  86.         }
  87. }
  88. // 在次序表的表头插入一个门生信息int insert_front(Plist L, student e){        if(L == NULL || full(L)){  // 查抄表是否已满或次序表为空                printf("表头插入失败\n");                return -1;        }        for(int i=L->len-1; i>=0; i--){  // 将全部门生信息后移                L->data[i+1] = L->data[i];        }        L->data[0] = e;  // 将新门生信息插入表头        L->len++;  // 门生数量增长        printf("表头插入乐成\n");        return 0;}// 在次序表的表尾插入一个门生信息int insert_rear(Plist L, student e){        if(L == NULL || full(L)){  // 查抄表是否已满或次序表为空                printf("表尾插入失败\n");                return -1;        }        L->data[L->len] = e;  // 将新门生信息插入表尾        L->len++;  // 门生数量增长        printf("表尾插入乐成\n");        return 0;}// 删除次序表的表头门生信息int delete_front(Plist L){        if(L == NULL || empty(L)){  // 查抄是否为空表                printf("表头删除失败\n");                return -1;        }        for(int i=0; i<L->len; i++){  // 将表中的门生信息前移                L->data[i] = L->data[i+1];        }        L->len--;  // 门生数量镌汰        printf("表头删除乐成\n");        return 0;}// 删除次序表的表尾门生信息int delete_rear(Plist L){        if(L == NULL || empty(L)){  // 查抄是否为空表                printf("表尾删除失败\n");                return -1;        }        L->len--;  // 表尾元素直接被忽略,相称于删除末了一个元素        printf("表尾删除乐成\n");        return 0;}// 删除次序表中重复的门生信息i
  89. nt delete_repeat(Plist L){
  90.         int i, j;
  91.         for(i=0; i<L->len; i++){
  92.                 for(j=i+1; j<L->len; j++){
  93.                         // 如果发现两个学生姓名相同,则删除后者
  94.                         if(strcmp(L->data[i].name, L->data[j].name) == 0){
  95.                                 delete_stu(L, j+1);  // 删除重复的学生信息
  96.                                 j--;  // 调整索引,继续检查下一个
  97.                         }
  98.                 }
  99.         }
  100.         return 0;
  101. }// 根据门生姓名查找并返回其在次序表中的位置
  102. int find_stu(Plist L, char key[20]){
  103.         int i, sub = -1;
  104.         for(i=0; i<L->len; i++){
  105.                 // 找到符合条件的学生
  106.                 if(strcmp(L->data[i].name, key) == 0){
  107.                         sub = i;  // 记录找到的位置
  108.                 }
  109.         }
  110.         if(sub == -1){
  111.                 return -1;  // 没有找到则返回 -1
  112.         }
  113.         return sub + 1;  // 返回学生在表中的位置,位置从1开始计数
  114. }// 根据门生姓名查找并输出全部符合条件的门生信息
  115. int find_stu_all(Plist L, char key[20]){
  116.         int i, sub = -1;
  117.         for(i=0; i<L->len; i++){
  118.                 // 输出所有符合条件的学生信息
  119.                 if(strcmp(L->data[i].name, key) == 0){
  120.                         printf("位置:%d\t是%s\n",i+1,L->data[i].name);
  121.                         sub = i;
  122.                 }
  123.         }
  124.         if(sub == -1){
  125.                 return -1;  // 没有找到则返回 -1
  126.         }
  127.         return sub + 1;
  128. }
复制代码
主函数文件:
  1. #include <myhead.h>
  2. #include "list.h"
  3. int main(int argc, const char *argv[])
  4. {
  5.     // 创建一个顺序表,并将其地址存储在指针 L 中
  6.     Plist L = create_list();  
  7.     int ch;         // 用于存储用户的选择
  8.     student e;      // 用于插入或修改的学生信息
  9.     int pos;        // 用于指定操作的位置
  10.     char name[20];  // 用于存储查找时输入的学生姓名
  11.     // 无限循环,直到用户选择退出(或通过外部手段中断)
  12.     while(1) {
  13.         // 提示用户选择要执行的操作
  14.         printf("\t\t1、输入学生信息\n");
  15.         printf("\t\t2、任意位置插入一个学生\n");
  16.         printf("\t\t3、任意位置删除一个学生\n");
  17.         printf("\t\t4、任意位置查找一个学生\n");
  18.         printf("\t\t5、任意位置修改一个学生\n");
  19.         printf("\t\t6、表头插入一个学生\n");
  20.         printf("\t\t7、表尾插入一个学生\n");
  21.         printf("\t\t8、表头删除一个学生\n");
  22.         printf("\t\t9、表尾删除一个学生\n");
  23.         printf("\t\t10、去除重复的学生\n");
  24.         printf("\t\t11、按照姓名查找返回位置\n");
  25.         printf("\t\t12、查找输出所有的学生\n");
  26.         printf("\t\t请输入你的选择:\n");
  27.         // 读取用户输入的选择
  28.         scanf("%d", &ch);
  29.         // 根据用户的选择执行相应的操作
  30.         switch(ch) {
  31.             case 1:
  32.                 // 输入学生信息并输出整个学生列表
  33.                 input_list(L);
  34.                 output_list(L);
  35.                 break;
  36.             case 2:
  37.                 // 在指定位置插入一个学生
  38.                 printf("请输入要插入的学生位置:\n");
  39.                 scanf("%d", &pos); // 读取要插入的学生位置
  40.                 printf("请输入学生ID、姓名、专业、年龄:\n");
  41.                 scanf("%d %s %s %d", &e.id, e.name, e.major, &e.age); // 读取学生信息
  42.                 insert_stu(L, pos, e);  // 在指定位置插入学生
  43.                 output_list(L);         // 输出更新后的学生列表
  44.                 break;
  45.             case 3:
  46.                 // 在指定位置删除一个学生
  47.                 printf("请输入要删除的学生位置:\n");
  48.                 scanf("%d", &pos); // 读取要删除的学生位置
  49.                 delete_stu(L, pos); // 删除指定位置的学生
  50.                 output_list(L);     // 输出更新后的学生列表
  51.                 break;
  52.             case 4:
  53.                 // 在指定位置查找一个学生
  54.                 printf("请输入要查找的学生位置:\n");
  55.                 scanf("%d", &pos); // 读取要查找的学生位置
  56.                 inserach_stu(L, pos); // 查找并输出指定位置的学生信息
  57.                 break;
  58.             case 5:
  59.                 // 修改指定位置的学生信息
  60.                 printf("请输入要修改的学生位置:\n");
  61.                 scanf("%d", &pos); // 读取要修改的学生位置
  62.                 printf("请输入新的学生ID、姓名、专业、年龄:\n");
  63.                 scanf("%d %s %s %d", &e.id, e.name, e.major, &e.age); // 读取新的学生信息
  64.                 change_stu(L, pos, e); // 修改指定位置的学生信息
  65.                 output_list(L);        // 输出更新后的学生列表
  66.                 break;
  67.             case 6:
  68.                 // 在表头插入一个学生
  69.                 printf("请输入学生ID、姓名、专业、年龄:\n");
  70.                 scanf("%d %s %s %d", &e.id, e.name, e.major, &e.age); // 读取学生信息
  71.                 insert_front(L, e); // 将学生插入表头
  72.                 output_list(L);     // 输出更新后的学生列表
  73.                 break;
  74.             case 7:
  75.                 // 在表尾插入一个学生
  76.                 printf("请输入学生ID、姓名、专业、年龄:\n");
  77.                 scanf("%d %s %s %d", &e.id, e.name, e.major, &e.age); // 读取学生信息
  78.                 insert_rear(L, e); // 将学生插入表尾
  79.                 output_list(L);    // 输出更新后的学生列表
  80.                 break;
  81.             case 8:
  82.                 // 删除表头的学生
  83.                 delete_front(L); // 删除表头学生
  84.                 output_list(L);  // 输出更新后的学生列表
  85.                 break;
  86.             case 9:
  87.                 // 删除表尾的学生
  88.                 delete_rear(L);  // 删除表尾学生
  89.                 output_list(L);  // 输出更新后的学生列表
  90.                 break;
  91.             case 10:
  92.                 // 删除重复的学生
  93.                 delete_repeat(L); // 删除学生列表中重复的学生
  94.                 output_list(L);   // 输出更新后的学生列表
  95.                 break;
  96.             case 11:
  97.                 // 按照姓名查找学生,并返回位置
  98.                 printf("请输入要查找的学生姓名:\n");
  99.                 scanf("%s", name); // 读取要查找的学生姓名
  100.                 pos = find_stu(L, name); // 查找学生
  101.                 if(pos == -1) {  // 如果找不到学生
  102.                     printf("查找失败\n");
  103.                 } else {         // 如果找到学生
  104.                     printf("查找成功,该学生位于第%d个位置\n", pos);
  105.                 }
  106.                 break;
  107.             case 12:
  108.                 // 查找并输出所有匹配的学生
  109.                 printf("请输入要查找的学生姓名:\n");
  110.                 scanf("%s", name); // 读取要查找的学生姓名
  111.                 find_stu_all(L, name); // 查找并输出所有符合条件的学生
  112.                 break;
  113.             default:
  114.                 // 输入无效的选择时提示用户重新输入
  115.                 printf("无效的选择,请重新输入。\n");
  116.                 break;
  117.         }
  118.     }
  119.     return 0;
  120. }
复制代码
结果显现:


        



三、总结

学习内容概述

编写了一个基于次序表管理门生信息的项目。项目包罗以下功能:创建次序表、查抄次序表是否满或空、增长门生信息、遍历次序表、在恣意位置插入或删除门生、按位置或按值修改门生信息、按值查找门生、删除重复门生信息。代码实现了次序表的根本利用,接纳数组存储门生数据。
学习难点

1. 次序表利用边界查抄:

在插入和删除利用时,必须查抄位置是否正当以及次序表是否为空或已满。这些边界查抄确保次序表利用的稳固性。
2. 内存管理:

创建次序表时须要动态分配内存,内存分配失败时要准确处理处罚。
3. 删除和插入利用中的数据移动:

插入数据时须要将插入位置后的全部元素后移;删除数据时,须要将被删除位置后的元素前移。
4. 去重功能的实现:

通过两层嵌套循环比力门生姓名来删除重复信息,且删除时须要调解索引。
紧张事项

1. 数组长度温次序表长度的关系:

次序表长度不能凌驾数组长度。每次增长或删除门生信息后,都须要更新次序表长度。
2. 位置和下标的转换:

在对次序表举行插入、删除和查找利用时,用户输入的位置要转换为数组下标(即位置-1)。
3. 动态内存分配:

须要确保动态分配内存乐成,否则大概会导致步调瓦解或出现未界说举动。
4. 字符串利用:

在查找和去重利用中,使用`strcmp`函数比力门生姓名,须要确保字符串的准确输入和处理处罚。
将来学习的重点

1. 非常处理处罚:

可以增长更多的非常处理处罚逻辑,确保次序表利用的结实性。比方,在利用过程中假如次序表出现错误,实时提示并处理处罚。
2. 内存管理:

深入学习动态内存分配与开释,制止内存走漏的题目。
3. 优化查找和去重算法:

现在的查找和去重利用时间复杂度较高,可以思量优化查找算法,如引入二分查找或哈希查找。
4. 扩展次序表功能:

进一步扩展次序表功能,如添加排序功能、批量删除或插入等利用,提升次序表的实用性。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表