当前位置:   article > 正文

线性表的基本操作实现 - 链表与顺序表_c++定义一个包含学号姓名成绩的顺序表

c++定义一个包含学号姓名成绩的顺序表

注:实验用书为 数据结构 C语言版 第2版,人民邮电出版社出版。
实验题目:学生管理系统的设计与实现
实验环境:Visual C++ 6.0或其他C++环境
一、实验目的
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
二、实验内容
定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:
1、根据指定学生个数,逐个输入学生信息;
2、逐个显示学生表中所有学生的相关信息;
3、根据姓名进行查找,返回此学生的学号和成绩;
4、根据指定的位置可返回相应的信息(学号,姓名,成绩);
5、给定一个学生信息,插入到表中指定的位置;
6、删除指定位置的学生记录;
7、统计表中学生个数。
三、实验提示
1、学生信息的定义
typedef struct {
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student;
2、顺序表的定义
typedef struct {
Student *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
3、链表的定义
typedef struct LNode{
Student data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
四、代码
顺序表方法:

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
#define MAXSIZE 100//假设的表的最大长度;
typedef struct{
    char no[8];   //8位学号
    char name[20]; //姓名
    int price;     //成绩
}Student,ElemType;
typedef  struct {
  Student   *elem=NULL;     //指向数据元素的基地址
  int  length;       //线性表的当前长度
 }SqList;

SqList L;//声明一个数据表

void InitList()
{
  //构造一个空的顺序表
    L.elem=new ElemType[MAXSIZE];
    if(!L.elem) exit(0);//存储分配失败退出
    L.length=0;
}
int menu_select()//选择菜单函数
{
    char s[3];
    int c;
    printf("\n         ***************主菜单**************\n");
    printf("         *    1. 录入新记录                *\n");
    printf("         *    2. 浏览显示所有记录          *\n");
    printf("         *    3. 按姓名查询记录并显示      *\n");
    printf("         *    4. 按编号查询记录并显示      *\n");
    printf("         *    5. 插入记录                  *\n");
    printf("         *    6. 删除记录                  *\n");
    printf("         *    7. 统计记录                  *\n");
    printf("         *    8. 退出                      *\n");
    printf("         ***********************************\n\n");

    do
    {
        printf("         请选择操作(1-8):");
        scanf("%s",s);
        c=atoi(s);
    }while(c<0||c>8); /*选择项不在~8之间重输*/
    return(c); /*返回选择项,主程序根据该数调用相应的函数*/
}
/*数据表取值*/
void Create()
{
  //新建学生数据
    int n;
    cout<<"根据指定学生个数,逐个输入学生信息:"<<endl;
    cout<<"学生个数n=";
    cin>>n;
    if(n<1||L.length+n>MAXSIZE){
        cout<<"创建失败"<<endl;
        return ;
    }
    for(int i=0;i<n;i++)//逐个添加数据
    {
        cout<<"第"<<i+1<<"个学生数据"<<endl<<"姓名:";
        cin>>L.elem[L.length].name;
        cout<<"学号:";
        cin>>L.elem[L.length].no;
        cout<<"成绩:";
        cin>>L.elem[L.length].price;
        L.length++;//每创建成功一个,则更新一次数量
    }
    cout<<"***操作成功***"<<endl;
}
void ShowAllDate()
{
    if(L.length<1)
    {
        cout<<endl<<"    很遗憾,空表中没有任何记录可供显示!"<<endl;
        return ;
    }
    cout<<"************ STUDENT ************"<<endl;
    cout<<"  编号     姓名     学号     成绩"<<endl;
    cout<<"---------------------------------"<<endl;
    for(int i=0;i<L.length;i++)
    {
        cout<<"   "<<i+1<<"      "<<L.elem[i].name<<"      "<<L.elem[i].no<<"      "<<L.elem[i].price<<endl
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/674233
推荐阅读
相关标签
  

闽ICP备14008679号