线性表的用处有哪些
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,线性表的用处有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。线性表有的用法:1、【StuData *elem】为指向动态分配的内存的
千家信息网最后更新 2025年02月19日线性表的用处有哪些
线性表的用处有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
线性表有的用法:1、【StuData *elem】为指向动态分配的内存的首地址;2、【int length】为保存已存储的数据据元素的数目;3、【void welcome int】为输出欢迎界面,并提示用户执行相应的操作。
线性表有的用法:
用顺序表举例说明
要求:
定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);
(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
typedef struct{ char stuID[ID_SIZE]; //学生学号 char stuName[NAME_SIZE]; //学生姓名 double stuScore; //学生成绩 } StuData;
typedef struct { Student *elem; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList;
/* * 顺序表 * 一个简陋的学生信息管理程序 * Data: 10/13/2017 20:42 */#include#include #include #include #include #include #include #define STU_NUM_MAX 100#define ID_SIZE 8#define NAME_SIZE 20typedef struct{ char stuID[ID_SIZE]; //学生学号 char stuName[NAME_SIZE]; //学生姓名 double stuScore; //学生成绩} StuData;typedef StuData* stuPtr;typedef struct{ StuData *elem; //指向动态分配的内存的首地址 int length; //保存已存储的数据据元素的数目} SqList;void welcome(int *p_choose);/* * 功能:输出欢迎界面,并提示用户执行相应的操作 * 参数:指向choose的指针,通过指针改变变量choose的值,根据其值执行相应的操作 * 返回值:无 */void InitList(SqList *p_seq);/* * 功能:一次性分配所有的储存空间,初始化 * 参数:SqList的指针 * 返回值:无 */void add(SqList *p_seq);/* * 功能: * * */stuPtr info_input(stuPtr info);/* * 功能:对数组赋值,其长度不超过len * 参数:stuID: 指向数组的指针 size_t * 返回值:传入的指针 */void NodeDelete(SqList *p_seq, int locate);/* * 功能:删除指定序号的数据元素 * 参数:p_seq: SqList的指针 locate: 序号(第几个) * 返回值:无 */StuData *search(stuPtr p, size_t len, char *target);/* * 功能:根据指定的字符串遍历查找是否存在相应的ID or Name * 参数:p: 指向第一个顺序元素 len: 已存储的数据元素的长度 target: 需要查找的字符 * 返回值:指向查找到的节点,不存在则返回NULL */void print(StuData *elem, size_t len);/* * 功能:打印一定长度的数据元素 * 参数:elem: 指向某个数据元素 len: 需要打印多少个数据元素(长度) * 返回值:无 */void save(FILE *stream, stuPtr p, size_t len);/* * 功能:将输入的信息保存到文件中 * 参数:stream: 指定的文件输入流 p: 指向第一个数据元素 len: 数据元素的长度 * 返回值:无 */int main(void){ int choose; char ans = 'y'; SqList L; InitList(&L); system("color 2F"); while (1) { fflush(stdin); ans = 'y'; welcome(&choose); switch (choose) { case 1: { while (ans == 'y') { if (L.length >= STU_NUM_MAX) { printf("\a\n\tWarning: Memory is full!\n"); break; } else { //info_input(&info); add(&L); printf("\n\nAdd succeefully! stu's num %u\n", L.length); printf("Continue?[y]\n"); fflush(stdin); ans = getchar( ); if (ans == '\n') { ans = 'y'; } system("cls"); } } break; } case 2: { int locate; while (ans == 'y') { printf("Please enter the node number you want to delete: "); scanf("%d", &locate); NodeDelete(&L, locate); printf("\a\n\n\t\tDelete Successfully\n"); printf("Continue?[y]"); fflush(stdin); ans = getchar( ); if (ans == '\n') { ans = 'y'; } system("cls"); } break; } case 3: { StuData *locate; char target[NAME_SIZE]; while (ans == 'y') { printf("Please enter the ID/Name of the student you want to find: "); scanf("%s", target); locate = search(L.elem, L.length, target); if (locate == NULL) { printf("\a\n\t\tSorry! There is no such person!\n"); } else { printf("\aFind successfully!\n"); print(locate, 1); } printf("Continu?[y] "); fflush(stdin); ans = getchar( ); if (ans == '\n') { ans = 'y'; } system("cls"); } break; } case 4: { printf("All of the stu's info are:\n\n"); print(L.elem, L.length); getchar( ); getchar( ); system("cls"); break; } case 5: { FILE *stream; if ((stream = fopen("info.dat", "w+")) == NULL) { perror("\a\n\n\t\tSorry: Open fail!\n"); break; } else { save(stream, L.elem, L.length); getchar( ); sleep(3); fclose(stream); system("cls"); break; } } case 6: { free(L.elem); L.elem = NULL; printf("\a\n\n\t\tBye Bye!\n\n"); sleep(2); system("cls"); system("color 0F"); exit(0); } default : { printf("\a\n\tSorry! I have not develop the function what you want!\n"); sleep(2); system("cls"); break; } } } return 0;}void welcome(int *p_choose){ printf("\n\n\n WELCOME\n"); printf("------------------------------------------------------\n"); printf("-- 1.增加指定学生信息\n"); printf("-- 2.删除指定位置信息\n"); printf("-- 3.按学号或姓名查找\n"); printf("-- 4.显示所有学生信息\n"); printf("-- 5.保存\n"); printf("-- 6.退出\n"); printf("------------------------------------------------------\n"); printf("请输入那想要执行的操作的序号: "); scanf("%d", p_choose); system("cls");}void InitList(SqList *p_seq){ p_seq->elem = (StuData *)malloc(STU_NUM_MAX*sizeof(StuData)); if (p_seq->elem == NULL) { perror("\n\n\t\tError: memory may full"); //perror?????????????? _exit(1); } else { p_seq->length = 0; }}void add(SqList *p_seq){ printf("Please enter information:\n"); while (1) { printf("ID: "); scanf("%s", p_seq->elem[p_seq->length].stuID); if (strlen(p_seq->elem[p_seq->length].stuID) >= ID_SIZE) { printf("It's too long, enter again\n"); sleep(1); system("cls"); } else { break; } } while (1) { printf("Name: "); scanf("%s", p_seq->elem[p_seq->length].stuName); if (strlen(p_seq->elem[p_seq->length].stuName) >= NAME_SIZE) { printf("It's too long, enter again\n"); sleep(1); system("cls"); } else { break; } } while (1) { printf("Score: "); scanf("%lf", &p_seq->elem[p_seq->length].stuScore); if (p_seq->elem[p_seq->length].stuScore <0 || p_seq->elem[p_seq->length].stuScore > 100) { printf("The score is percentage system\n"); sleep(1); system("cls"); } else { break; } } p_seq->length++;}void NodeDelete(SqList *p_seq, int locate){ for (int i=locate; i<=p_seq->length; i++) { memccpy((p_seq->elem[i-1]).stuID, (p_seq->elem[i]).stuID, '\0', ID_SIZE); memccpy((p_seq->elem[i-1]).stuName, (p_seq->elem[i]).stuName, '\0', NAME_SIZE); (p_seq->elem[i-1]).stuScore = (p_seq->elem[i]).stuScore; } p_seq->length--;}stuPtr search(stuPtr p, size_t len, char *target){ for (unsigned i=0; i
看完上述内容,你们掌握线性表的用处有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
学生
元素
信息
数据
功能
指向
参数
姓名
学号
指针
长度
线性
成绩
位置
顺序
输入
序号
分配
存储
用处
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电商网站用什么数据库好
文件档案管理服务器
安卓 网络安全
传奇168区服务器
网络安全信息的例子
苹果软件开发在中国的市值
山西现代化软件开发制造价格
传奇一个服务器怎么多开界面
交通运输局网络安全应急演练方案
金蝶数据库文件在哪
asp 连接 数据库
现代数据库技术论文
网络安全陈艺斌
嵌入式软件开发报价单
开发芯片不是软件开发的吗
网络安全法日常监管
宿州软件开发培训
玉溪4351网络安全公司
网络技术学习资源网
北京游戏软件开发公司严
什么是互联网科技企业
杭州速广网络技术有限公司
华邦互联网科技
国际版服务器评测
武汉专业的网络安全机构简单易学
软件开发服务公司运营方案
罗定翔昊互联网科技有限公司
mysql数据库如何自增字符
福建方策基正软件开发
国家网络安全培养