数据机构——顺序表的基本操作

news2024/11/25 20:24:16

一、实验要求 

 

 

 

 

 

 

 

 

 二、实验代码

# include "bits/stdc++.h"

using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100  //定义顺序表的最大长度

//定义数据结构体
typedef struct book
{
    int number;  //编号
    string name; //名称
    float price; //定价
}book;

//定义顺序表结构体
typedef struct
{
    book data[MAXSIZE];  //顺序表数据
    int length;  //顺序表长度
}SqlList;

//顺序表的初始化函数
bool InitList_Sq(SqlList &L)
{
    for (int i = 0; i < MAXSIZE; i++)
    {
        L.data[i].number = 0;
        L.data[i].name = 'a';
        L.data[i].price = 0;
    }
    L.length = 0;
    SqlList *elem = &L;
    if(elem != NULL)
        return OK;
    else 
        return ERROR;
}

//顺序表的插入操作
bool ListInsert_Sq(SqlList &L, int que, book num)
{
    //判断插入的位置是否合法
    if(que<0 || que>L.length)
        return ERROR;
    if(L.length >= MAXSIZE)
        return ERROR;
    for (int i = L.length; i > que; i--)
    {
        L.data[i] = L.data[i-1];
    }
    //添加新元素
    L.data[que].number = num.number;
    L.data[que].name = num.name;
    L.data[que].price = num.price;
    L.length ++;
    return true;
}

//顺序表的打印输出操作
void Printout_Sq(SqlList &L)
{
    cout << "编号" << setw(15) << "书名" << setw(15) << "定价" << endl;
    for (int i = 0; i < L.length; i++)
    {
        cout << L.data[i].number << setw(15) << L.data[i].name << setw(15) << L.data[i].price << endl;
    }
    cout<<endl;
}

//顺序表的取出(按位置取出)
bool GetElem(SqlList &L, int i)
{
    //判断查询的位置是否合理
    if(i<0 || i>=L.length)
        return ERROR;
    cout << "第" << i << "条的图书信息为: " << endl;
    cout << L.data[i].number << setw(15) << L.data[i].name << setw(15) << L.data[i].price << endl;
}

//顺序表的查找
int LocateElem_Sq(SqlList &L, float price)
{
    for (int i = 0; i < L.length; i++)
    {
        if(L.data[i].price == price)
        {
            cout << "查找成功" << endl;
            cout << "该价格对应的书名为: " << L.data[i].name << endl;
            return 0;
        }
    }
    cout << "查询失败" << endl; 
    return 0; 
}

//顺序表的删除
bool ListDelete_Sq(SqlList &L, int que)
{
    if(que<0 || que>=L.length)
        return ERROR;
    for (int i = que; i < L.length; i++)
    {
        L.data[i].number = L.data[i+1].number;
        L.data[i].price = L.data[i+1].price;
        L.data[i].name = L.data[i+1].name;
    }
    L.length --;
    return OK;
}

int main()
{
    setlocale(LC_ALL,"zh-CN"); //设置程序为中文编码

    //========第一问===========
    SqlList L;
    if(InitList_Sq(L))
        cout << "成功建立顺序表!!!" << endl;
    else
        cout << "顺序表建立失败!!!" << endl;

    //========第二问===========
    for (int i = 0; i < 3; i++)
    {
        book book;
        cin >> book.number;  //编号
        cin >> book.name;    //书名
        cin >> book.price;   //定价
        ListInsert_Sq(L, i, book);
    }
    Printout_Sq(L); //输出
    
    //========第三问===========
    cout << "请输入一个位置用来获取数据:" << endl;
    for (int i = 0; i < 2; i++)
    {
        int num;
        cin >> num;
        GetElem(L, num);
    }
    
    //========第四问===========
    cout << "请输入所查找的书本价格:" << endl;
    float price_elect;
    cin >> price_elect;
    LocateElem_Sq(L, price_elect);

    //========第五问===========
    cout << "请输入所要删除的书籍的编号:";
    int num_elect;
    cin >> num_elect;
    if(ListDelete_Sq(L, num_elect))
        cout << "删除成功" << endl;
    else
        cout << "删除失败" << endl;
    Printout_Sq(L); //输出

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、CSS下拉菜单[颜色布局、子影响父]

一、源码 效果 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 鼠标操作 …

iconfont在vue项目中的使用及如何在一个项目中引入多个iconfont图标库

iconfont的使用 下载方式本文不做详细的展示 重点演示一下同一个项目如何使用两个图标库 有的时候在一个项目的基础上,把当前的项目改为另一个项目,不想影响到当前的字体图标,或者不知道之前的字体图标管理的图标库在哪里了.再引入一个新的字体图标库不失为一个好办法,那么如何…

DASCTF NOV X联合出题人2022年度积分榜争夺赛 RE-部分题解

babytea 一轮8位加密 先对输入的前4位进行异或0x1234567 在对输入的后4位进行异或0x89ABCDEF 对del的条件加密为del>>180时进行异或0x1234567 到了32时 就把先对输入的前4位作为异或的xor1 先对输入的后4位进行异或xor2 逻辑整理下那么就是 void encrypt(uint32_t*…

Linux安装elasticsearch、IK分词器和kibana

简介&#xff1a; 因为内网环境不能上外网&#xff0c;安装最新的版本有问题而且不容易排查&#xff0c;所以安装了比较老的一个版本6.2.2。在安装的时候&#xff0c;为了讲清楚所有文件源头&#xff0c;所以介绍的啰嗦&#xff0c;但是很详细。 这里主要说明elasticsearch、ki…

如何用R语言在机器学习中建立集成模型?

介绍 在本文中&#xff0c;我将向您介绍集成建模的基础知识。 另外&#xff0c;为了向您提供有关集成建模的实践经验&#xff0c;我们将使用R进行集成。最近我们被客户要求撰写关于集成模型的研究报告&#xff0c;包括一些图形和统计输出。 1.什么是集成&#xff1f; 通常&am…

简单描述标准生成树协议STP

简单描述标准生成树协议STP 生成树协议STP 为什么需要生成树 如上图所示网络拓扑&#xff0c;如果没有生成树协议&#xff0c;在网络通信开始时&#xff0c;假设PC0向PC1发送一个数据包&#xff0c;交换机S2的MAC地址表中并没有对应的MAC地址&#xff0c;因此会产生ARP洪泛&a…

常见的项目管理问题有哪些?

在项目执行过程中&#xff0c;相信大家总会遇到一些项目管理常见问题以及各种意想不到的管理问题。如果想让你的项目取得最终成功&#xff0c;项经理便需要有一个计划来快速有效地应对任何出现的问题&#xff0c;否则它们会影响项目的成果。那么常见的项目管理问题有哪些呢&…

PolarDB-X 的 in 常量查询

场景 实际场景中经常需要根据一些常量指标做IN查询&#xff0c;并且IN值往往是分区键。例如在电商场景中&#xff0c;有两张表&#xff0c;买家表与订单表。订单的具体信息会记录到订单表中&#xff0c;该表按照订单ID进行哈希拆分&#xff1b;买家表则会保存买家ID及其关联的…

Flowable 中的网关、流程变量以及历史流程

今天这篇文章&#xff0c;松哥和大家梳理一下 Flowable 中的网关、流程变量以及历史流程的玩法。 1. 三大网关 Flowable 中网关类型其实也不少&#xff0c;常见的主要有三种类型&#xff0c;分别是&#xff1a; 排他网关并行网关包容网关 这三个里边最常用的当然就是排他网关…

苦等官方阿里云盘TV版久矣,终于期待一款TV版。

苦等官方阿里云盘TV版久矣&#xff0c;终于期待一款TV版。 一、获取链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19Z-2Lb4-lOSU14M83rivVA 提取码&#xff1a;o2z0 二、产品&#xff1a; 1、文件列表&#xff1a;确定键打开文件或文件夹&#xff0c;菜单键进…

华为19级专家10年心血终成百页负载均衡高并发网关设计实战文档

负载均衡&#xff08;LoadBalance&#xff09;的字面意思是将工作负载分担到多个工作单元上进行执行&#xff0c;它建立在现有网络结构之上&#xff0c;是构建分布式服务、大型网络应用的关键组件。 近十几年来&#xff0c;负载均衡技术层出不穷&#xff0c;令人眼花缭乱。如果…

[思考进阶]01 如何克服自己的无知?

除了要提升自己的技术能力&#xff0c;思维的学习和成长也非常非常重要&#xff0c;特推出此[思考进阶]系列&#xff0c;进行刻意练习&#xff0c;从而提升自己的认知。 有段时间我特别喜欢研究一些定律和法则&#xff0c;比如&#xff1a;熵增定律、懒蚂蚁效应、蝴蝶效应、吸引…

Java搭建宝塔部署实战毕设项目物品分类springboot管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的物品分类springboot管理系统源码&#xff0c;适合准备做毕业设计的同学&#xff0c;可以下载搭建起来&#xff0c;在这基础上加一些功能&#xff0c;改改UI&#xff0c;随便写篇答题…

解决办法‘npm‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

今天使用了nvm这个node的保姆级版本管理工具,的确很香。 首先打开官网nvm.uihtm.com/ 下载安装过程很顺利&#xff0c;但是验证node及npm是否安装成功时&#xff0c;出现下面错误提示。 C:\Users\Administrator>npm -v npm 不是内部或外部命令&#xff0c;也不是可运行的…

里奥哈大使撰文 | 来一场云旅行吧,盘点里奥哈那些美轮美奂的酒庄~

俗话说得好&#xff0c;“里奥哈美酒夜光杯&#xff0c;欲买机票马上飞”&#xff08;说得太好了&#xff0c;反正也去不了下次别说了&#xff09;既然疫情当下&#xff0c;无法来一场说走就走的旅行&#xff0c;那我们就来云游一下里奥哈这个美轮美奂的酒庄吧&#xff01; 说起…

2023年浙大MEM英语二作文干货模版:临阵磨枪可用

这些年来&#xff0c;通过杭州达立易考教育对英语二小作文的总结发现&#xff0c;书信形式成为主要考察的内容&#xff0c;而随着形式的变化和难度的提升&#xff0c;复合型题材逐渐成为侧重点&#xff0c;比如道歉信加建议信、感谢信加建议信等。我们不建议原班照背模版&#…

汇编语言快速回顾(以x86_64为例)

GAS (GNU Assembler) 是一款基于 Linux 的汇编器&#xff0c;主要供 GNU 项目使用&#xff0c;用于对 Linux 内核及其他软件进行进行汇编。 MASM (Microsoft Macro Assembler) 是微软操作系统的专属汇编器&#xff0c;于 1981 年随 Visual Studio 一起发布。 大学本科教育中有两…

小学生python游戏编程arcade----精灵调用图片的两种类

小学生python游戏编程arcade----精灵调用图片的两种类前言精灵调用图片的两种类1、第一种类的定义1.1 以文件名及缩放比例做初始参数1.2 利用变换图片的颜色更换角色的使用1.3 代码分析转换文件来不及调用&#xff0c;时间问题&#xff1f;&#xff1f;&#xff1f;&#xff1f…

【数据结构初阶】链式二叉树接口实现+痛苦的OJ题

递归心决&#xff1a;(xdm好好感悟) 1.确定递归的结束条件 2.确定递归的单层逻辑 3.确定递归的参数和返回值 文章目录一、链式二叉树接口1.二叉树的结构体2.手动造一棵二叉树3.二叉树前、中、后序遍历(递归的神圣大门开启)4.二叉树的结点个数5.二叉树的叶子结点个数6.二叉树的…