线性表的用处有哪些
发表于: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安全错误
数据库的锁怎样保障安全
无锡品牌软件开发活动简介
服务器名字忘了怎么找回
合肥小学校园网络安全
流动网络安全性
云端知识数据库
电脑作为ftp服务器
网络安全工程师考试在哪里报名
新闻周刊网络安全文字
东莞易特软件开发有限公司
数据库到底是
网络安全生产教育心得体会
红包软件开发商
一诺计划网络技术有限公司
互联网公司服务器怎么做
计算机网络技术科目考试
idea查看数据库表内容
购物管理系统 数据库
删除数据库所有框架恢复不了
odbc数据库注册
gis软件开发基础知识大全
最强网络安全大赛
数据库公有云
java 数据库长连接
免费的未加密网络安全性
珠海澳仕玛互联网科技有限公司
网络安全观后感一段话
wamp 数据库在哪
天宏小助礼互联网科技
gis软件开发基础知识大全
播放到设备流式处理服务器