首页 > 编程语言 >C/C++ 顺序表的初始化、添加、插入、删除(删除顺序表中指定的所有元素)

C/C++ 顺序表的初始化、添加、插入、删除(删除顺序表中指定的所有元素)

时间:2023-01-16 22:56:39浏览次数:47  
标签:顺序 return 删除 int elems C++ length SqList

#include <iostream>
#include <stdlib.h>
#define MAX_SIZE 100
using namespace std;

typedef struct _SqList {
    int* elems; //顺序表的基地址
    int size; //顺序表的大小
    int length; //顺序表的长度
}SqList;

bool initSqList(SqList& L) { //初始化顺序表
    L.elems = new int[MAX_SIZE];
    if (!L.elems) {
        return false;
    }
    L.size = MAX_SIZE;
    L.length = 0;
    return true;
}
void PrintSqList(SqList& L) { //打印输出顺序表
    cout << "顺序表的长度为" << L.length << " ,顺序表的大小为" << L.size << endl;
    for (int i = 0; i < L.length; i++) {
        cout << L.elems[i] << " ";
    }
    cout << endl;
}
bool SqListAppend(SqList& L,int e) { //在顺序表尾部添加元素
    if (L.length == L.size) { //顺序表空间已满
        return false;
    }
    L.elems[L.length] = e;
    L.length++;
    return true;
}
bool SqListInsert(SqList& L, int i, int e) {  //在顺序表的指定位置插入元素
    if (i < 0 || i >= L.length) return false;
    if (L.length == L.size) return false;
    for (int j = L.length - 1; j >=i; j--) {
        L.elems[j + 1] = L.elems[j];
    }
    L.elems[i] = e;
    L.length++;
    return true;
}
bool SqListDeleteI(SqList& L, int i) { //删除顺序表中指定位置的元素
    if (!L.elems) return false;
    if (i < 0 || i >= L.length) return false;
    if (i == L.length - 1) { //直接删除顺序表最后一个元素
        L.length--;
        return true;
    }
    for (int j = i; j < L.length; j++) {
        L.elems[j] = L.elems[j+1]; //被删除元素后面的元素全部前移一位
    }
    L.length--;
    return true;
}
bool SqListDeleteE(SqList& L,int e) {  //删除顺序表中指定的所有元素
    if (!L.elems) return false;
    int n = 0;//记录不等于e的元素个数 
    for (int i = 0; i < L.length; i++) { //从前往后扫描 
        if (L.elems[i] != e) {
            L.elems[n] = L.elems[i];  //利用原表的空间记录值不为e的元素 
            n++;
        }
    }
    L.length = n;
    return true;
}
void SqListDestory(SqList& L) {  //销毁顺序表
    if (L.elems)  delete[] L.elems; //释放存储空间
    L.length = 0;
    L.size = 0;
}
int main() {
    SqList list; //创建顺序表list
    int e = 0;   //顺序表要插入的元素
    int count = 0; //顺序表要插入的元素个数
    int i = 0; //顺序表的元素位置

    //初始化顺序表
    if (initSqList(list)) {
        cout << "顺序表初始化成功!" << endl;
    }
    else {
        cout << "顺序表初始化失败!" << endl;
    }
    PrintSqList(list);

    //在顺序表尾部添加元素
    cout << "请输入要添加的元素个数:";
    cin >> count;
    for (int i = 0; i < count; i++) {
        cout << "请输入要添加的元素:";
        cin >> e;
        if (SqListAppend(list, e)) {
            cout << "添加成功!" << endl;
        }
        else {
            cout << "添加失败!" << endl;
        }
    }
    PrintSqList(list);

    //在顺序表的指定位置插入元素
    cout << "请输入要插入的元素位置和元素:";
    cin >> i >> e;
    if (SqListInsert(list, i, e)) {
        cout << "插入成功!" << endl;
    }
    else {
        cout << "插入失败!" << endl;
    }
    PrintSqList(list);

    //删除顺序表中指定位置的所有元素
    cout << "请输入要删除的元素位置:";
    cin >> i;
    int n = list.elems[i];
    if (SqListDeleteI(list, i)) {
        cout << "删除在"<< i <<"处的元素 " << n << " 成功" << endl;
    }
    else {
        cout << "删除失败" << endl;
    }
    PrintSqList(list);

    //删除顺序表中指定的元素
    cout << "请输入要删除的元素:";
    cin >> e;
    if (SqListDeleteE(list, e)) {
        cout << "删除成功" << endl;
    }
    else {
        cout << "删除失败" << endl;
    }
    PrintSqList(list);

    //销毁顺序表
    SqListDestory(list);

    system("pause");
    return 0;
}

标签:顺序,return,删除,int,elems,C++,length,SqList
From: https://www.cnblogs.com/smartlearn/p/17056490.html

相关文章

  • SAP UI5 应用 manifest.json 文件里 Routes 数组元素的相对顺序,不可忽视的试读版
    本教程第77篇文章发表之后,一位学习非常仔细的朋友发现了一个问题:SAPUI5应用开发教程之七十七-SAPUI5动态页面路由的高级用法:路由记录routes和target的一对多......
  • C++11 智能指针
    C++11智能指针Writtenon2023-01-16学习参考资料:C++现代实用教程:智能指针30分钟讲明白现代C++最重要的特性之一:智能指针动态内存管理官方文档栈对象、静态对......
  • SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析试读
    本文的写作动机,来源于我的知识星球里一位朋友的提问:我们现在在BTP上给successfactors增强一个功能,画面fiori,针对画面上的fo字段或者picklist类型字段,为了方便画......
  • C++文学研究助手[2023-01-16]
    C++文学研究助手[2023-01-16]综合实验18文学研究助手一、实验目的(1)熟练掌握串的基本操作及应用。(2)熟练掌握串的匹配操作算法。(3)基于串的存储和操作,实现对英文......
  • 《维我校友,星聚南邕》南宁e中校歌c++版
    #include<cstdio>#include<bits/stdc++.h>#include<time.h>#include<windows.h>#defineqdo262#defineqre294#defineqmi330//q前缀为低音,1后缀为高音,s......
  • python2.7错误:Microsoft Visual C++ 9.0 is required解决办法
     distutils.errors.DistutilsPlatformError:MicrosoftVisualC++9.0isrequired.Getitfromhttp://aka.ms/vcpython27`点开连接404,不提供下载,可取github上下载htt......
  • C/C++数据结构题目[2023-01-16]
    C/C++数据结构题目[2023-01-16]以下内容二选一题目1:校园导航系统的设计与实现问题描述:校园导航系统能够提供校园内场所信息和路径查询。以传媒大学校园为例,校园内包......
  • C/C++学生成绩管理系统[2023-01-16]
    C/C++学生成绩管理系统[2023-01-16]《C\C++语言课程设计》指导书一、课程设计概要项目名称:学期评优方案设计适用学期:2022年秋季学期适用班级:07D229-07D22C班二、项目......
  • 继承类的构造析构顺序
    构造:现有父类后有子类析构:和构造顺序相反,先析构子类后析构父类#include<iostream>classA{public:A(){std::cout<<"ctorfather"<<std::e......
  • C/C++路面导航系统[2023-01-16]
    C/C++路面导航系统[2023-01-16]数据结构大作业:路面导航系统系统初始信息,保存在数据库或其他文件中:1.初始化地图,生成若干节点,具有节点名,坐标(x,y)等必要信息。节点间的......