C/C++ 顺序表的初始化、添加、插入、删除(删除顺序表中指定的所有元素)
#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;
}
C/C++ 顺序表的初始化、添加、插入、删除(删除顺序表中指定的所有元素)的更多相关文章
- oracle怎样用触发器将一张表的数据添加到另外一张表中
好吧,我就假设你两个表的数据结构相同吧create table TabA( address varchar2(50), press varchar2(50), city varchar2(50) )/ ...
- LeetCode 哈希表 380. 常数时间插入、删除和获取随机元素(设计数据结构 List HashMap底层 时间复杂度)
比起之前那些问计数哈希表的题目,这道题好像更接近哈希表的底层机制. java中hashmap的实现是通过List<Node>,即链表的list,如果链表过长则换为红黑树,如果容量不足(装填 ...
- React---简单实现表单点击提交插入、删除操作
import React,{Component,Fragment} from 'react' class App extends Component { constructor(){ super() ...
- 【原】为DevExpress的ChartControl添加Y轴控制 和 GridControl中指定列添加超级链接
一.控制ChartControl的Y轴范围 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件,具体代码如下: ...
- C 线性表的顺序存储实现及插入、删除等操作示例
一.线性表的定义 线性表(Linear List)是由同一类型元素构成的有序序列的线性结构.线性表中元素的个数称为线性表的长度:线性表内没有元素(长度为0)时,称为空表:表的起始位置称为表头,表的结束 ...
- 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数
<扩展和嵌入python解释器>1.4 模块方法表和初始化函数 1.4 模块方法表和初始化函数 下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法 ...
- Oracle查询表结果添加到另一张表中
转自:https://blog.csdn.net/lx870576109/article/details/78336695 把每一个知识点进行积累:Oracle数据库中将查询一张表的结果添加到另一张表 ...
- Oracle查询一个表的数据插入到另一个表
1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: insert ...
- Oracle创建删除用户,角色,表空间,导入导出数据库命令总结(转载)
无意间看到一篇文章,觉得对于ORACLE的新手很实用,特转载,原文出处这里 说明:在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后 ...
- sqlserver触发器如何将一个库中的数据插入到另外一个库中
需求:实现的功能就是,查询当前表的所有信息,插入到另外一个库中(同一台机器,同一个SqlServer) 解决:insert into dB2.dbo.TB2 select * from db1.dbo ...
随机推荐
- git push 时发生的error: failed to push some refs to
- 先再一个新建的一个文件夹里面git clone +你要克隆的远程仓库 - 然后把克隆下来的.git文件夹复制到你的本地仓库,然后再commit-git add, - git push 就可以提交成 ...
- pat乙级1012数字分类
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int ...
- 公式b-(a-b)
- Spring-XML文件与注解
(一)基于XML的使用 (二)基于注解和XML的混合使用
- unity task
https://blog.csdn.net/weixin_43405845/article/details/105028291
- vector 搜罗最强版
vector 常见用法(以int类型为例) https://www.cnblogs.com/YJthua-china/p/6550960.html 概括描述总体vector,包括内存的探讨 https ...
- SSM项目
1.环境搭建 1.1 结构目录 1.2 配置逆向工程 1.2.1 pom.xml <?xml version="1.0" encoding="UTF-8" ...
- Codeforces Global Round 17 - D. Not Quite Lee
裴蜀定理 + lowbit Problem - D - Codeforces 题意 定义一个包含 \(m\) 个元素的数组 \(b\) 是好的,当且仅当满足以下两个条件 对于 \(b[i]\), 存在 ...
- IDEA给【类】和【方法】设置作者和日期等注释
https://blog.csdn.net/m0_61933976/article/details/127021176 一.在Java类的开头自动注释作者名字和日期等信息 这样以后只要我们创建一个类, ...
- vue项目中配置svg图标 cli3路径
1 添加依赖 npm install svg-sprite-loader file-loader -D 2 在components目录下新增一个IconSvg.vue文件 <template&g ...