首页 > 其他分享 >顺序表的定义,初始化,增加删除,按值按位查找

顺序表的定义,初始化,增加删除,按值按位查找

时间:2024-04-04 17:05:23浏览次数:10  
标签:初始化 顺序 按值 int SeqList 元素 按位 位置

这是一个使用C++语言实现的顺序表。顺序表是一种线性表,它的元素在物理上是连续存储的。这里的顺序表是用数组来实现的。以下是对代码中函数的简单解释:

  1. InitList(SeqList &L):初始化顺序表,将所有元素赋值为0,长度为0。

  2. ListInsert(SeqList &L,int i,int c):在顺序表的第i个位置后插入元素c,原来在第i个位置及其后面的元素都要向后移动一个位置。

  3. ListDelete(SeqList &L,int i,int &c):删除顺序表的第i个位置的元素,并将其值赋给c,原来在第i个位置后面的元素都要向前移动一个位置。

  4. GetElem(SeqList L,int i):按位查找顺序表中第i个位置的元素。

  5. LocateElem(SeqList L,int i):按值查找顺序表中值为i的元素,返回其在顺序表中的位置。

在主函数中,先声明一个顺序表L,然后对其进行初始化,插入元素,删除元素,按位查找元素和按值查找元素。

#include <iostream>
#define Maxsize 10
typedef struct {//定义列表
    int data[Maxsize];
    int length;
}SeqList;
//初始化。初始化赋值为0;
void InitList(SeqList &L){
    for(int i=0;i<Maxsize;i++){
        L.data[i]=0;
    }
    L.length=0;
}
//添加元素
void ListInsert(SeqList &L,int i,int c){//插入i后,元素c
    for(int j=L.length;j>=i;j--){//后面元素依次往后移
        L.data[j]=L.data[j-1];
    }
    L.data[i-1]=c;//修改i的位置值为c
    L.length++;//长度+1
}
//删除元素
void ListDelete(SeqList &L,int i,int &c){//删除i后的元素c
    for (int j=i;j<L.length;j++) {//i后的元素一次往前移
        L.data[j-1]=L.data[j];
    }
    L.data[i-1]=c;
    L.length--;
}
//按位查询
//顺序表有顺序,所以不用遍历
int GetElem(SeqList L,int i){
    return L.data[i-1];
}
//按值查询
//需要循环遍历
int LocateElem(SeqList L,int i){
    for(int j=0;j<L.length;j++){
        if (L.data[j]==i){
            return j+1;
        }
    }
    return 0;
}
int main() {
    SeqList L;//声明一个顺序表
    InitList(L);
    ListInsert(L,5,4);
    int c=-1;//把&c的值带回来
    ListDelete(L,3,c);
    scanf("c=%d",c);//删除的数值为多少
    GetElem(L,3);
    LocateElem(L,9);
    return 0;
}

标签:初始化,顺序,按值,int,SeqList,元素,按位,位置
From: https://blog.csdn.net/qq_75113277/article/details/137357084

相关文章

  • Vue2电商前台项目(一):项目前的初始化及搭建
    一、项目初始化创建项目:sudovuecreateapp1.项目配置(1)浏览器自动打开在package.json文件中,serve后面加上--open"scripts":{"serve":"vue-cli-serviceserve--open","build":"vue-cli-servicebuild","lint":&q......
  • 华为 2023年4月19日 实习 机试第一题——批量初始化次数
    某部门在开发一个代码分析工具,需要分析模块之间的依赖关系,用来确定模块的初始化顺序,是否有循环依期等问题。“批量初始化”是指一次可以初始化一个或多个模块。例如模块1依赖模块2,模块3也依赖模块2,但模块1和3没有依赖关系,则必须先“批量初始化”模块2,再“批......
  • js 可以间接地“声明”或初始化变量的其他方式(除了直接使用var、let和const)
    在JavaScript中,除了直接使用var、let和const关键字来声明变量外,还有一些其他方式可以间接地“声明”或初始化变量。以下是一些示例:函数参数:当定义一个函数时,函数的参数列表中的每个参数实际上都会成为该函数作用域内的变量。这些变量在函数被调用时会被自动声明和初始化。func......
  • 初始化kubeadm init失败,再次初始化时显示6443、10259、10257、10250、2379、2380被占
    第一次使用kubeadminit初始化时,因kubelet.service和和kubelet未启动等部分原因导致初始化失败,当再次初始化时显示6443、10259、10257、10250、2379、2380这几个端口被占用,一个个使用sudolsof-i:port查看太麻烦,直接使用kubeadmreset将当前节点恢复为未安装Kubernetes的状......
  • MDK中如何使用STM32CubeMX来配置工程和生成初始化代码?
    在MDK中使用STM32CubeMX配置工程和生成初始化代码是一个高效的开发流程,它可以显著提高开发效率并减少手动配置错误。以下是详细的步骤和示例代码,展示如何使用STM32CubeMX来配置工程,并将其与MDK结合使用。1.安装STM32CubeMX首先,访问STMicroelectronics的官方网站,下载并安......
  • yolov8逐步分解(2)_DetectionTrainer类初始化过程
     接上篇文章yolov8逐步分解(1)--默认参数&超参配置文件加载继续讲解。 1.默认配置文件加载完成后,创建对象trainer时,需要从默认配置中获取类DetectionTrainer初始化所需的参数args,如下所示deftrain(cfg=DEFAULT_CFG,use_python=False):  """TrainandoptimizeYOLO......
  • Item 4:确保对象在使用前被初始化
    芝士wa2024.3.30Item4链接“在C++中,读取一个未初始化的值会引起未定义行为,在一些平台上,读一个未初始化值会引起程序终止,更可能的情况是得到一个你所读的那个位置上的semi-randombits(半随机二进制位),最终导致不可预测的程序行为和恼人的调试。”初始化列表通过构造函数进......
  • MogDB 2.1.1 初始化参数概要说明
    MogDB2.1.1初始化参数概要说明本文出处:https://www.modb.pro/db/394787MogDB数据库安装完成后,官方文档提供了刷新参数的脚本,推荐执行脚本来进行初始化参数设置。本文在官方提供脚本的基础上添加了简单说明,方便新学习的同学能大概了解参数作用。CentOS7.7下标准安装MogDB......
  • Arcgis按位置选择工具解决区域内要素的选择问题
    一、方法一按位置选择1.菜单中Selection-》Selectbylocation2.点击Apply即可选中多边形内的要素。二、方法二Intersect相交操作Toolbox-》AnalysisTools-》Overlay-》Interscet 点击OK。根据FID_small选择对应的多边形可以统计其数目。  ......
  • vector初始化
    1.一维初始化//无参初始化vector<int>vec1;//长度为10vector<int>vec2(10);//长度为10,且初始化为1vector<int>vec3(10,0);2.二维数组初始化//无参初始化vector<vector<int>>vec1;//确认行数vector<vector<int>>vec2(3);//确认行数、列数:三行四列vecto......