顺序表结构

  • 逻辑结构:线性表
  • 存储结构:顺序存储
  • 基本运算:
    1. 初始化
    2. 查找节点
    3. 插入节点
    4. 删除节点

数据准备

typedef int Status;typedef struct
{char name[20];      // 姓名char stuId[8];        // 学号}student;typedef student ElemType;typedef struct
{ElemType *elem;    // 存储空间的基地址 int length;     // 当前长度
}SqList;

初始化

分配内存,此时长度设为0。

Status InitList(SqList *L)   // 初始化
{ L->elem=(ElemType *)malloc(sizeof(ElemType)*MAXSIZE);if(!L->elem)  exit(-1); L->length=0; printf("初始化成功\n\n");return 1;
}

查找

int FindByStuId(SqList &L) // 根据学号查找,返回该同学在顺序表中的编号
{printf("请输入要查找的学生学号:");  char s[20]; scanf("%s",s);for(int i=1;i<=L.length;i++){if(strcmp(L.elem[i].stuId,s)==0)return i;}return 0;
}

插入

Status ListInsert(SqList &L,int i,ElemType data) // 在 i位置插入
{if((i<1)||(i>L.length+1))   //序号不正确 return 0;if(L.length>=MAXSIZE)  //已经达到最大值 return 0;for(int j=L.length;j>=i;j--){L.elem[j+1]=L.elem[j];       //元素后移 }L.elem[i]=data;L.length++;return 1;
}

删除

Status ListDelete(SqList &L,int i) //        删除 i位置的学生信息
{if((i<1)||(i>L.length))      //序号不正确 return 0;for(int j=i;j<=L.length;j++){L.elem[j]=L.elem[j+1];       //元素前移 }L.length--;return 1;
}

总的代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 10int num;typedef int Status;typedef struct
{char name[20];      // 姓名char stuId[8];        // 学号}student;typedef student ElemType;
typedef struct
{ElemType *elem;    // 存储空间的基地址 int length;     // 当前长度
}SqList;Status InitList(SqList *L)      // 初始化
{   L->elem=(ElemType *)malloc(sizeof(ElemType)*MAXSIZE);if(!L->elem)  exit(-1); L->length=0;    printf("初始化成功\n\n");return 1;
}void GetElem(SqList &L,int i)      // 访问顺序表
{printf("学号:%-10s\t姓名:%-20s\n",L.elem[i].stuId,L.elem[i].name);
}void Input(ElemType *e)
{printf("姓名:");   scanf("%s",e->name);printf("学号:");   scanf("%s",e->stuId);printf("输入完成\n\n");
}void Input(SqList &L)
{printf("请输入要录入学生的人数:");scanf("%d",&num);for(int i=1;i<=num;i++){printf("第%d个学生:\n",i);Input(&L.elem[i]);} L.length=num;
}void Output(SqList &L)
{for(int i=1;i<=num;i++){                    GetElem(L,i);}
}int FindByStuId(SqList &L) // 根据学号查找,返回该同学在顺序表中的编号
{printf("请输入要查找的学生学号:");  char s[20]; scanf("%s",s);for(int i=1;i<=L.length;i++){if(strcmp(L.elem[i].stuId,s)==0)return i;}return 0;
}ElemType FindByNum(SqList &L) // 根据序号查找,返回该同学的信息
{printf("请输入要查询的位置:");int n;scanf("%d",&n);GetElem(L,n);
}Status ListInsert(SqList &L,int i,ElemType data) // 在 i位置插入
{if((i<1)||(i>L.length+1))   //序号不正确 return 0;if(L.length>=MAXSIZE)  //已经达到最大值 return 0;for(int j=L.length;j>=i;j--){L.elem[j+1]=L.elem[j];       //元素后移 }L.elem[i]=data;L.length++;return 1;
}void ListInsert(SqList &L)
{printf ("请输入要插入的位置:");int id;    scanf("%d",&id);printf("请输入学生信息:\n");ElemType temp;Input(&temp);if(ListInsert(L,id,temp)){num++;printf("插入成功\n");}else{printf("插入失败\n");}
}Status ListDelete(SqList &L,int i) //      删除 i位置的学生信息
{if((i<1)||(i>L.length))      //序号不正确 return 0;for(int j=i;j<=L.length;j++){L.elem[j]=L.elem[j+1];       //元素前移 }L.length--;return 1;
}void ListDelete(SqList &L)
{printf("请输入要删除的位置:");int id; scanf("%d",&id);if(ListDelete(L,id)){num--;printf("删除成功\n");}else{printf("删除失败\n");}
}void menu()
{printf("\n********************************\n\n");printf("1. 录入信息\n");printf("2. 显示信息\n");printf("3. 按学号查找学生\n");printf("4. 按序号查找学生\n"); printf("5. 在指定位置插入学生信息\n");printf("6. 在指定位置删除学生信息\n");printf("7. 学生总数\n");printf("\n********************************\n\n");
}int main()
{menu();SqList L;       ElemType a,b,c,d;int num,choose;if(InitList(&L)){while(1){printf("请输入选择,其他键退出:");scanf("%d",&choose);switch(choose){case 1: Input(L);                       break;  case 2: Output(L);                      break;  case 3: GetElem(L,FindByStuId(L));      break;  case 4: FindByNum(L);                   break;  case 5: ListInsert(L);                  break;      case 6: ListDelete(L);                  break;case 7:printf("已录入的学生个数为:%d\n\n",L.length);break;                       default:    exit(1);}   }} else{printf("初始化失败!");} return 0;
}

运行结果:



注意:此程序没有太在意数据校验,乱输入可能有bug。

顺序表--学生信息管理相关推荐

  1. 考试报名管理系统C语言顺序表,学生信息管理系统(顺序表)实验

    <学生信息管理系统(顺序表)实验>由会员分享,可在线阅读,更多相关<学生信息管理系统(顺序表)实验(29页珍藏版)>请在人人文库网上搜索. 1.精品文档数 据 结 构 课 程 ...

  2. 顺序表学生个人健康信息表(数组)

    #include<iostream> #include<string> #include<stdlib.h> #include<fstream> #in ...

  3. 数据结构 线性顺序表 学生管理系统

    今年是专升本第一年,跟老师学习做了个学生管理系统,有菜单选项,基本的增删改查都是没有问题的,废话不多说,代码呈上: #include <stdio.h> #include<mallo ...

  4. 顺序表——学生成绩管理

    1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入.删除.查找等操作.分别输出结果. # include <iostream> ...

  5. 学生信息管理(顺序表)(数据结构入门)

    要求: 自己设计学生基本信息表 具备功能:创建.清空.销毁.插入.删除.按值查找.更新某人信息.指定位置查找.遍历. 详解我是没有了,可以看这里 瞎写的,欢迎纠错 #include <iostr ...

  6. 学生信息统计(顺序表)

    实验目的 : 1 .掌握线性表的定义: 2 .掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根 ...

  7. 学生信息管理系统——顺序表

    定义一个包含学生信息(学号,姓名,成绩)的的 顺序表,使其具有如下功能: 1.1根据指定学生个数,逐个输入学生信息: 1.2逐个显示学生表中所有学生的相关信息: 1.3根据姓名进行查找,返回此学生的学 ...

  8. 一个包含学生信息的顺序表

    #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXSIZE 100 /*单个 ...

  9. 用顺序表创建学生信息花名册

    问题:用顺序表创建学生信息包括姓名,学号,语数外3科成绩,并对顺序表实现基本的操作. 1.LinearList.h #ifndef _LINEARLIST_H_ #define _LINEARLIST ...

最新文章

  1. 186. [USACO Oct08] 牧场旅行
  2. iOS_“图片浏览选择”功能的编写思路
  3. python小结教学_python教学
  4. 深入剖析ASP.NET的编译原理之二:预编译(Precompilation)
  5. 6大设计原则之单一职责原则
  6. anaconda+python3.7安装keras_win10(64)+python3.7+Anaconda3+tensorflow-cpu+Keras安装(亲测有效)...
  7. JavaScript 中的函数式编程实践
  8. 是什么原因引起的“ Invalid Session”错误?
  9. CISSP 重点知识点总结3
  10. PDF转Word软件
  11. Time Shift 与 Record 功能的区别
  12. 解决mac备忘录会自动将英文双引号转化为中文双引号
  13. springboot设置空参数_springboot请求参数为空
  14. 802.11a data rate
  15. The Coder Vol.1: 向上生长
  16. R7 5800H和i5 11300H参数对比差距大不大
  17. openvas linux/window漏洞扫描和整改
  18. 乐观处世,诚实做人,不骄不躁,积极进取; 勇于创新,踏实实现,谨慎规划,付诸实践; 事在人为...
  19. 电磁场与电磁波(1)——简史
  20. 库存管理系统软件哪个好用 盘点前十名!

热门文章

  1. 学术期刊的 LaTeX整理合集(持续更新中)
  2. 什么是SHA系列算法,SHA-1和MD5算法有什么区别
  3. ZoteroCNKI抓取不到学位论文的解决办法
  4. Ubuntu下配置、训练YOLO的全过程——无人机检测小系统
  5. CISCO学习笔记(四)Trunk功能及端口模式
  6. 网页代码扒ppt_用“扒片”的方法制作ppt
  7. android 无法添加帐户,安卓手机outlook无法登录、添加帐户
  8. AW-Convlution:An Attention Module for Convolutional Neural Networks
  9. 天干地支(python)
  10. 被百度 AI 官方认证的大学,到底是什么水平?