news 2026/8/4 15:33:59

构建顺序表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
构建顺序表

直接从a[1],a[2],a[3]......开始存储

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #define INITSIZE 100 typedef int elemType; //建立元素 typedef struct { char name[10]; //姓名 char no[8]; //8位学号 int price; //成绩 }Student; typedef struct { Student *elem; // 顺序表存储数组,存放实际的数据元素。(数组指针elem指示线性表的基地址) int len; // 顺序表中的元素个数,亦称表的长度。 int maxSize; // 顺序表的的最大可能的长度。 } seqList; //初始化顺序表 void initialize(seqList *L) { L->elem = (Student *) malloc(sizeof(Student) * INITSIZE);//申请动态数组 if (!L->elem) exit(-1); L->maxSize = INITSIZE-1; //0下标位置不放元素 L->len = 0; } //输入元素 void input(seqList *L) { int n,i; printf("请输入需要录入的学生人数:"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("第%d个学生的名字:",i); scanf("%s",L->elem[i].name); printf("第%d个学生的学号:",i); scanf("%s",L->elem[i].no); printf("第%d个学生的成绩:",i); scanf("%d",&L->elem[i].price); printf("\n"); } L->len=n; } // 查找第i个元素的值 elemType get (seqList *L ,int i ) { if ((i<1)||(i>L->len)) exit(1); printf("第%d个学生的信息为:\n",i); printf("姓名:%s ",L->elem[i].name); printf("学号:%s ",L->elem[i].no); printf("成绩:%d\n",L->elem[i].price); return 1; } //根据内容查找元素 void findbyname(seqList *L,char name[]) { int i; for(i=1;i<=L->len;i++) { if(strcmp(L->elem[i].name,name)==0) { printf("%s的学号为:",name); printf("%s\n",L->elem[i].no); printf("%s的成绩为:",name); printf("%d\n",L->elem[i].price); break; } } if(i>L->len) { printf("查无此人\n"); } } //在第i个位置插入元素 void insert(seqList *L,int i,Student e) { int k; if((i<1)||(i>L->len+1)) //插入位置不合理 { printf("/插入位置不合理\n"); } if(L->len==L->maxSize-1)//空间满了,无法插入元素 { printf("空间满了,无法插入元素\n"); } if(i==L->len+1) { L->elem[i]=e; } if((i>=1)&&(i<=L->len)) { for(k=L->len+1;k>i;k--) { L->elem[k]=L->elem[k-1]; } L->elem[i]=e; } L->len++; printf("插入成功\n"); } //删除第i个元素 int remove(seqList *L,int i) { int k; if((i<1)||(i>L->len)) //删除位置不合理 { printf("/删除位置不合理\n"); return 0; } for(k=i;k<=L->len;k++) { L->elem[k]=L->elem[k+1]; } L->len--; printf("删除成功\n"); return 1; } //逐个输出顺序表中的元素 void print(seqList *L) { int i; printf("学生表中所有学生的信息有:\n"); for(i=1;i<=L->len;i++) { printf("第%d个学生的信息:\n",i); printf("姓名:%s;",L->elem[i].name); printf("学号:%s;",L->elem[i].no); printf("成绩:%d\n",L->elem[i].price); } } //求顺序表中元素的总数 int lengthlist(seqList *L) { printf("表中学生总人数为:%d\n",L->len); return 0; } void main() { int a,i; char answer[20],name[20]; Student e; seqList list; seqList *L=&list; initialize(L); input(L); do { printf("******************************************************************\n"); printf("请选择:打印学生信息:1\n根据指定位置返回相应学生信息:2\n通过姓名查询学生学号和成绩:3\n插入学生信息:4\n删除学生信息:5\n统计表中学生人数:6\n"); printf("******************************************************************\n"); scanf("%d",&a); switch(a) { case 1:print(L);break; case 2: printf("请输入查找的位置:"); scanf("%d",&i); get (L,i);break; case 3: printf("请输入查找学生的姓名:"); scanf("%s",name); findbyname(L,name);break; case 4: printf("请输入插入的位置:"); scanf("%d",&i); printf("请输入插入的信息:\n"); printf("学生姓名:"); scanf("%s",e.name); printf("学生学号:"); scanf("%s",e.no); printf("学生成绩:"); scanf("%d",&e.price); insert(L,i,e);break; case 5: printf("请输入删除的位置:"); scanf("%d",&i); remove(L,i);break; case 6: lengthlist(L);break; default:printf("error\n"); } printf("是否进行下一步操作?(y or n)"); scanf("%s",answer); } while(strcmp(answer,"y")==0); printf("欢迎下次使用,再见!"); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:12:07

任务通知(RTOS)

任务通知 freeRTOS从v8.2.0版本开始提供任务通知这个功能&#xff0c;每个任务都有一个32位的通知值&#xff0c;在大多数情况下&#xff0c;任务通知可以替代二值信号量&#xff0c;计数信号量&#xff0c;事件组&#xff0c;也可以替代长度为1的队列&#xff08;可以保存一个…

作者头像 李华
网站建设 2026/7/14 15:12:07

什么是过滤器?为什么要使用过滤器?

1.过滤器的定义用于对请求和响应进行预处理和后处理的组件。响应前处理&#xff1a;在请求到达目标资源之前执行。响应后处理&#xff1a;在响应离开目标资源之后执行。2.过滤器的意义1.进行日志记录&#xff0c;例如&#xff1a;import javax.servlet.*; import java.io.IOExc…

作者头像 李华
网站建设 2026/7/14 15:12:08

Best-of-Jupyter:2023年最值得收藏的300+ Jupyter生态项目全解析

Best-of-Jupyter&#xff1a;2023年最值得收藏的300 Jupyter生态项目全解析 【免费下载链接】best-of-jupyter &#x1f3c6; A ranked list of awesome Jupyter Notebook, Hub and Lab projects (extensions, kernels, tools). Updated weekly. 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/7/14 15:12:06

解决90%的DICOM文件问题:Fellow Oak DICOM错误处理与兼容性方案

解决90%的DICOM文件问题&#xff1a;Fellow Oak DICOM错误处理与兼容性方案 【免费下载链接】fo-dicom Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity 项目地址: https://gitcode.com/gh_mirrors/fo/fo-dicom Fellow Oak DIC…

作者头像 李华
网站建设 2026/7/14 15:12:06

ROS2安卓应用-ROS2-Mobile-Android

一.简介 ROS2-Mobile-Android 是一个基于 Android 的 ROS2 移动端控制与可视化应用&#xff0c;使用ros2-java开发&#xff0c;面向移动机器人场景&#xff0c;支持在手机端进行话题查看、发布/订阅交互与可视化控件操作&#xff0c;帮助机器人工程师更好地方便地调试机器人。可…

作者头像 李华
网站建设 2026/7/14 15:12:08

SynCamMaster: 多视角同步视频生成开源项目教程

SynCamMaster: 多视角同步视频生成开源项目教程 【免费下载链接】SynCamMaster [ICLR25] SynCamMaster: Synchronizing Multi-Camera Video Generation from Diverse Viewpoints 项目地址: https://gitcode.com/gh_mirrors/sy/SynCamMaster 1. 项目介绍 SynCamMaster 是…

作者头像 李华