定义一个顺序表结构的学生成绩表结构体

typedef struct{int score[MAXSIZE];       //学生成绩int *elem;                //存储空间的基地址 int length;              //学生成绩表中当前记录个数
}Stu;

本文解决以下编程问题:

1、编写函数,创建一个顺序表(数据自拟);

2、编写函数,在顺序表的指定位置插入一个元素;

3、编写函数,在顺序表的指定位置删除一个元素;

4、编写函数,将两个有序顺序表合并成一个新的有序顺序表;

一、各函数具体代码如下:

写在前面:由于题目作答无法将顺序表内的元素显示在控制台上,故预先造两个函数——

int InitList(Stu &L)、 void PrintList(Stu &L);

int InitList(Stu &L)         //初始化数据表
{L.elem=new int[MAXSIZE];if(!L.elem) exit(OVERFLOW);L.length=0;return OK;
}
void PrintList(Stu &L)       //打印当前数据
{cout<<"当前顺序表所有元素:";for (int i = 0; i<L.length; i++){cout<<L.score[i]<<" ";}cout<<endl;
}

编写函数,创建一个顺序表(数据自拟);

void CreateList(Stu &L,int n)
{if(n<1||n>MAXSIZE) cout<<"创建失败!请输入合法长度!"<<endl;cout<<"长度合法,请输入各项数据!"<<endl;for(int i=0;i<n;i++){cin>>L.score[i];L.length++;}cout<<"创建成功!"<<endl;PrintList(L);
}

编写函数,在顺序表的指定位置插入一个元素;

void ListInsert(Stu &L)              //在顺序表的指定位置插入一个元素
{int i,newscore;cout<<"请输入插入位置:";cin>>i;while((i<1)||(i>L.length+1))    //判断插入位置是否合法{cout<<"插入位置无效!请重新输入插入位置:";cin>>i;}if(L.length==MAXSIZE)      //判断存储空间是否已满{cout<<"已达到最大存储空间,无法继续执行插入操作!"<<endl;}cout<<"请输入所要插入的元素:";cin>>newscore;for(int j=L.length;j>=i;j--)L.score[j]=L.score[j-1];             //所要插入的位置及其之后的元素逆着后移一位 L.score[i-1]=newscore;                      //将要插入的数据e放入第i个位置++L.length;                                  //表长+1 cout<<"插入成功!!!"<<endl;PrintList(L);
}

编写函数,在顺序表的指定位置删除一个元素;

void ListDelete(Stu &L)              //在顺序表的指定位置删除一个元素
{int i;cout<<"请输入删除位置:";cin>>i;while((i<1)||(i>L.length))                    //判断删除位置是否合法{cout<<"删除位置无效!请重新输入删除位置:";cin>>i;} for(int j=i;j<=L.length-1;j++)L.score[j-1]=L.score[j];              //被删除元素之后的元素顺着前移一位 --L.length;                                  //表长-1 cout<<"删除成功!!!"<<endl;PrintList(L);
}

编写函数,将两个有序顺序表合并成一个新的有序顺序表;

void MergeList_Stu(Stu &L,Stu &M)                //将两个有序顺序表合并成一个新的有序顺序表
{int i,j,temp;Stu W;InitList(W);W.length=L.length+M.length;                   //新表长度为待合并两表长度之和 for(i=0;i<L.length;i++)                      //依次将两表中的数据录入新表中 {W.score[i]=L.score[i];               }i=0;for(int j=L.length;j<W.length;j++){W.score[j]=M.score[i];i++;}//以下用选择排序对新表进行排序for(i=0;i<W.length-1;i++){for(j=i+1;j<W.length;j++){if(W.score[i]>W.score[j]){temp=W.score[i];W.score[i]=W.score[j];W.score[j]=temp;}}} PrintList(W);
}

二、完整代码(含各函数和main)

#include <iostream.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
#define OVERFLOW -2
typedef struct{int score[MAXSIZE];      //学生成绩int *elem;                //存储空间的基地址 int length;              //学生成绩表中当前记录个数
}Stu;
int InitList(Stu &L);               //初始化数据表
void PrintList(Stu &L);             //实现功能后,打印出当前数据以实现用户交互
void CreateList(Stu &L,int n);      //创建一个顺序表
void ListInsert(Stu &L);            //在顺序表的指定位置插入一个元素
void ListDelete(Stu &L);            //在顺序表的指定位置删除一个元素
void MergeList_Stu(Stu &L,Stu &M);  //将两个有序顺序表合并成一个新的有序顺序表
int main(int argc, char *argv[])
{int Listlength,SecondListlength;Stu L;InitList(L);cout<<"欲创建一个学生成绩顺序表,请输入表长:"<<endl;cin>>Listlength;CreateList(L,Listlength);ListInsert(L);ListDelete(L);cout<<"欲再次创建一个顺序表,请根据操作说明助推程序进行!"<<endl;Stu M;InitList(M);cout<<"请输入第二个顺序表表长:"<<endl;cin>>SecondListlength;CreateList(M,SecondListlength);MergeList_Stu(L,M);delete[]L.elem;             //释放L存储空间 delete[]M.elem;               //释放M存储空间 return 0;
}
int InitList(Stu &L)            //初始化数据表
{L.elem=new int[MAXSIZE];if(!L.elem) exit(OVERFLOW);L.length=0;return OK;
}void PrintList(Stu &L)     //实现功能后,打印出当前数据以实现用户交互
{cout<<"当前顺序表所有元素:";for (int i = 0; i<L.length; i++){cout<<L.score[i]<<" ";}cout<<endl;
}
void CreateList(Stu &L,int n)
{if(n<1||n>MAXSIZE) cout<<"创建失败!请输入合法长度!"<<endl;cout<<"长度合法,请输入各项数据!"<<endl;for(int i=0;i<n;i++){cin>>L.score[i];L.length++;}cout<<"创建成功!"<<endl;PrintList(L);
}
void ListInsert(Stu &L)             //在顺序表的指定位置插入一个元素
{int i,newscore;cout<<"请输入插入位置:";cin>>i;while((i<1)||(i>L.length+1))    //判断插入位置是否合法{cout<<"插入位置无效!请重新输入插入位置:";cin>>i;}if(L.length==MAXSIZE)      //判断存储空间是否已满{cout<<"已达到最大存储空间,无法继续执行插入操作!"<<endl;}cout<<"请输入所要插入的元素:";cin>>newscore;for(int j=L.length;j>=i;j--)L.score[j]=L.score[j-1];             //所要插入的位置及其之后的元素逆着后移一位 L.score[i-1]=newscore;                      //将要插入的数据e放入第i个位置++L.length;                                  //表长+1 cout<<"插入成功!!!"<<endl;PrintList(L);
}
void ListDelete(Stu &L)             //在顺序表的指定位置删除一个元素
{int i;cout<<"请输入删除位置:";cin>>i;while((i<1)||(i>L.length))                    //判断删除位置是否合法{cout<<"删除位置无效!请重新输入删除位置:";cin>>i;} for(int j=i;j<=L.length-1;j++)L.score[j-1]=L.score[j];              //被删除元素之后的元素顺着前移一位 --L.length;                                  //表长-1 cout<<"删除成功!!!"<<endl;PrintList(L);
}
void MergeList_Stu(Stu &L,Stu &M)               //将两个有序顺序表合并成一个新的有序顺序表
{int i,j,temp;Stu W;InitList(W);W.length=L.length+M.length;                   //新表长度为待合并两表长度之和 for(i=0;i<L.length;i++)                      //依次将两表中的数据录入新表中 {W.score[i]=L.score[i];               }i=0;for(int j=L.length;j<W.length;j++){W.score[j]=M.score[i];i++;}//以下用选择排序对新表进行排序for(i=0;i<W.length-1;i++){for(j=i+1;j<W.length;j++){if(W.score[i]>W.score[j]){temp=W.score[i];W.score[i]=W.score[j];W.score[j]=temp;}}} PrintList(W);
}

 执行效果如下:

分享完毕~

欢迎小伙伴们在文下评论和私信喔~

【数据结构】顺序表的创建、插入、删除、合并相关推荐

  1. 动态顺序表的创建,增加,删除,查找

    先上代码,先上代码 #include<stdio.h> #include<stdlib.h> #define initsize 10 typedef struct {int* ...

  2. 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

    学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...

  3. 数据结构——顺序表的合并

    数据结构--顺序表的合并 具体要求:写一个函数,其函数的功能是将非递增顺序表LA和LB合并到非递增顺序表LC中 数据结构-顺序表的操作之合并顺序表 一.顺序表的结构 首先要定义的是顺序表的结构体,只有 ...

  4. 存储树形数据_数据结构篇之顺序表的创建以及实现

    大家知道,数据结构主要研究的是数据的逻辑结构和存储结构及其操作,逻辑结构分为线性结构.树形结构以及图形结构,存储结构分为顺序存储以及链式存储,今天主要带领大家认识和实现数据间的线性结构----顺序表. ...

  5. 数据结构-顺序表(C语言实现)

    主函数代码(main.c) #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include "sqlist.h&quo ...

  6. 数据结构-顺序表(动态分配存储空间)

    数据结构-顺序表(动态分配存储空间) (1)顺序表的结构定义: 结构型定义:(动态分配存储空间) /*** 动态分配存储空间*/ #define InitSize 100 //动态分配存储空间时,不限 ...

  7. 数据结构--顺序表、链表、栈、队列、树、文件(visual studio可运行)

    顺序表的顺序存储(增删查) #include <stdio.h> #include <stdlib.h> #define MaxSize 50 typedef int Elem ...

  8. Educoder头歌数据结构顺序表及其应用

    头歌实践平台答案educoder 数据结构-顺序表及其应用 第1关:顺序表的实现之查找功能 /***************************************************** ...

  9. 数据结构-顺序表基本操作(C语言实现)

    参考书:王道考研数据结构 //函数的声明 SqList InitList(l);                                    //初始化一个顺序表 void PrintfLi ...

最新文章

  1. (四)工况曲线构建 2019年研究生数学建模D题《汽车行驶工况构建》
  2. 获取有效工作日封装类(原创)
  3. GestureDetector学习之左右滑动,上下滑动屏幕切换页面
  4. Spring基于XML装配Bean
  5. 如何在PHP开启gzip页面压缩实例
  6. 适用于openvino 2020.2的yolov5的docker制作
  7. 微信小程序 自动解决分包大小问题_一个小小的优化,能让你的小程序瘦身10%...
  8. 学python买什么书-Python爬虫入门看什么书好 小编教你学Python
  9. Java读取文本文件中文乱码问题
  10. python优点和特点-Python的优点和缺点有哪些?Python语言的特点
  11. 使用CImageList的一点心得
  12. 聚类分析入门(理论)
  13. 计算机断电无法启动不了系统,电脑因为强制断电导致系统无法正常启动的解决办法...
  14. 财务内部收益率用计算机怎么算,​财务内部收益率怎么算
  15. 裁剪左上角x左上角y填什么_在“context.moveTo(x,y);”中,x、y 是相对于【 】的左上角。...
  16. IT经理的两条职业路做管理还是管理咨询
  17. 回溯法——回溯法的算法思想
  18. List remove的三种正确方法
  19. jQuery 手风琴案例
  20. 大数据处理常用的数据结构

热门文章

  1. isPrime 判断素数的函数
  2. navicat 解析sql_使用 Navicat 查询分析器优化查询性能(第 1 部分)
  3. [RK3568 Android11] 开发之开发者选项中添加USB OTG模式切换(二)
  4. 项目中对数据库的操作
  5. MIDI音乐制作概论,常用插件与流行音乐模板
  6. C语言实现银行ATM存取款系统 | 附源码
  7. Python之Excel图片处理(将excel chart另存为图片)
  8. Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”
  9. java实现一个跳转结构程序,Java程序控制结构 - osc_12yjz2ym的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. %在C语言计算中的用法