数据结构——线性表顺序表示详解

目录

1.线性表的类型定义

 2.基本操作

3.线性表的存储结构

4.补充

1.元素类型说明

2.数组定义​编辑

3.c语言的内存动态分配

4.c++的动态存储分配

5.c++中的参数传递

引用类型作参数 

6.顺序表基本操作的实现

1.线性表的初始化 

代码示例:

2.销毁线性表,清空线性表

​ 代码示例:

3.求线性表长度,判断线性表是否为空

代码示例:

4.顺序表的取值

 代码示例:

5.顺序表的查找

 代码示例:

 6.顺序表的插入

代码示例:

 

​7.顺序表的删除

代码示例:

 

7.顺序表的操作算法分析 

8.总的代码及示例


1.线性表的类型定义

相当于一个数组

 2.基本操作

 

 

 3.线性表的存储结构

 

 

 

 

4.补充

1.元素类型说明

 2.数组定义

3.c语言的内存动态分配

 计算出所需的大小再将它的指针赋值给data

4.c++的动态存储分配

5.c++中的参数传递

 

 

 

引用类型作参数 

 

使用引用后传进函数的就是a和b本身,并没有重新复制一份 

6.顺序表基本操作的实现

 

 

1.线性表的初始化 

代码示例:

typedef struct{int *elem;int length;
}sqlist;bool init_sqlist(sqlist &l)
{l.elem = new int[100];if(!l.elem) exit(-2);l.length = 0;return 1;
}

2.销毁线性表,清空线性表

 代码示例:

void destory_list(sqlist &l)
{if(l.elem) delete l.elem;
}void clear_list(sqlist &l)
{l.length = 0;
}

3.求线性表长度,判断线性表是否为空

代码示例:

int getlength(sqlist &l)
{return l.length;
}bool isempty(sqlist &l)
{if(l.length == 0) return 1;else return 0;
}

4.顺序表的取值

 代码示例:

int getelem(sqlist &l,int i,int &e)
{if(i < 1 || i > l.length) return -1;e = l.elem[i-1];return 1;
}

5.顺序表的查找

 代码示例:

int locateelem(sqlist & l,int e)
{for(int i = 0; i < l.length; i++){if(l.elem[i] == e) return i + 1;}return 0;
}

 

 6.顺序表的插入

 

代码示例:

int insert(sqlist &l,int i,int e)
{if(i < 1 || i > l.length + 1) return 0;if(l.length == 100) return 0;for(int j = l.length - 1;j >= i - 1;j--){l.elem[j + 1] = l.elem[j];}l.elem[i - 1] = e;l.length ++;return 1;
}

 7.顺序表的删除

 

代码示例:

int deletelist(sqlist &l,int i)
{if(i < 1 || i > l.length) return 0;for(int j = i; j <= l.length - 1; j++){l.elem[j - 1] = l.elem[j];}l.length--;return 1;
}

 

7.顺序表的操作算法分析 

 

 

8.总的代码及示例

#include<bits/stdc++.h>
using namespace std;typedef struct{int *elem;int length;
}sqlist;void init_sqlist(sqlist &l)
{l.elem = new int[100];l.length = 0;
}void destory_list(sqlist &l)
{if(l.elem) delete l.elem;
}void clear_list(sqlist &l)
{l.length = 0;
}int getlength(sqlist &l)
{return l.length;
}bool isempty(sqlist &l)
{if(l.length == 0) return 1;else return 0;
}int getelem(sqlist &l,int i,int &e)
{if(i < 1 || i > l.length) return -1;e = l.elem[i-1];return 1;
}int locateelem(sqlist & l,int e)
{for(int i = 0; i < l.length; i++){if(l.elem[i] == e) return i + 1;}return 0;
}int insert(sqlist &l,int i,int e)
{if(i < 1 || i > l.length + 1) return 0;if(l.length == 100) return 0;for(int j = l.length - 1;j >= i - 1;j--){l.elem[j + 1] = l.elem[j];}l.elem[i - 1] = e;l.length ++;return 1;
}bool deletelist(sqlist &l,int i)
{if(i < 1 || i > l.length) return 0;for(int j = i; j <= l.length - 1; j++){l.elem[j - 1] = l.elem[j];}l.length--;return 1;
}int main()
{sqlist l;init_sqlist(l);cout << getlength(l) << endl;insert(l,1,1);insert(l,2,10);insert(l,3,100);insert(l,4,1000);insert(l,5,10000);cout << locateelem(l,100) << endl;cout << locateelem(l,10000) << endl;cout << getlength(l) << endl;deletelist(l,3);cout << getlength(l) << endl;return 0;
}

 

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

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

相关文章

什么是光伏气象站?—气象科普

光伏气象站&#xff0c;也称为光伏环境监测仪&#xff0c;是一种专门针对光伏发电站研发生产的环境监测系统。它主要利用太阳能电池板将太阳能转化为电能&#xff0c;并配备有气象监测设备以实时监测和记录气象数据。这些数据对于评估光伏电站的性能、效率和故障诊断至关重要&a…

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱 在做室外公共广播/背景音乐系统时&#xff0c;对于草坪音箱的安装方法,大家可能不甚了解&#xff0c;所以将具体安装方法作简要说明。 音箱安装步骤如下&#xff1a; 1.测量草地音箱的底座尺寸大小&#xff0c;最…

Linux 多线程开发

第三章 Linux 多线程开发 3.1 线程3.1.2 线程操作3.1.2 线程属性 3.2 线程同步3.2.1 互斥量/锁3.2.2 死锁3.2.3 读写锁 3.3 生产者消费者模型3.3.1 条件变量3.3.2 信号量/灯 网络编程系列文章&#xff1a; 第1章 Linux系统编程入门&#xff08;上&#xff09; 第1章 Linux系统…

TSINGSEE青犀煤矿矿井视频监控与汇聚融合管理视频监管平台建设方案

一、背景需求 随着我国经济的飞速发展&#xff0c;煤炭作为我国的主要能源之一&#xff0c;其开采和利用的重要性不言而喻。然而&#xff0c;煤矿事故频发&#xff0c;不仅造成了巨大的人员伤亡和财产损失&#xff0c;也对社会产生了深远的负面影响。视频监控系统作为实现煤矿智…

【Rockchip android7.1 平台rtl8821cs wifi移植调试】

Rockchip 平台rtl8821cs wifi移植调试 问题描述解决方法 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip rk3128 OS:Android 7.1.2 Kernel: 3.10 问题描述 客户需要在现在的板子上调一款RTL882…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要&#xff1a;在零售行业的技术进步中&#xff0c;开发商品识别系统扮演着关键角色。本博文详细阐述了如何利用深度学习技术搭建一个高效的商品识别系统&#xff0c;并分享了一套完整的代码实现。系统采用了性能强劲的YOLOv8算法&#xff0c;同时对YOLOv7、YOLOv6、YOLOv5等…

华为OD机试 - 字符串化繁为简(Java 2024 C卷 200分)

目录 专栏导读一、题目描述示例&#xff1a; 二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&…

2024蓝桥杯每日一题(区间合并)

一、第一题&#xff1a;挤牛奶 解题思路&#xff1a;区间合并 区间合并模板题 【Python程序代码】 n int(input()) a [] for i in range(n):l,r map(int,input().split())a.append([l,r]) def cmp(x):return x[0],x[1] a.sort(keycmp) res1,res20,0 st,ed a[0][0…

visualization_msgs::Marker 的pose设置,map坐标系的3d box显示问题

3D框显示 3D框显示可以使用visualization_msgs::Marker::LINE_LIST或者LINE_STRIP&#xff0c;前者使用方法需要指明线的两个端点&#xff0c;后者自动连接相邻两个点。 姿态问题 网上看了一些&#xff0c;没有涉及到朝向设置&#xff0c;Pose.orientation默认构造为4个0 至…

Python环境下一维时间序列的小波尺度谱和时间平均小波谱(基于Morlet小波)

小波分析是较好的非平稳信号分析方法之一&#xff0c;它通过伸缩和平移运算对信号进行多尺度细化分析&#xff0c;能够在不同的尺度上描述信号的局部特征&#xff0c;为微弱故障特征信号的检测提供了有效的工具。小波尺度谱可看作一个有恒定相对带宽的谱图&#xff0c;能够反映…

Java剖析 : HashMap底层存储数据的结构 | HashSet添加不重复元素底层原理

HashSet底层剖析 前言&#xff1a; 我们知道Set中所存储的元素是不重复的&#xff0c;那么Set接口的实现类HashSet在添加元素时是怎么避免重复的呢&#xff1f; ★ HashSet在添加元素时&#xff0c;是如何判断元素重复的? ● 在底层会先调用hashCode()&#xff0c…

OpenAI:ChatGPT API 文档之 Embedding

在自然语言处理和机器学习领域&#xff0c;"embeddings" 是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称为嵌入空间&#xff08;embedding space&#xff09;&#xff0c;而生成的向量则称为嵌入向量&#xff08;embedding vector&#xff0…

14---DVI电路设计

视频链接 DVI硬件电路设计01_哔哩哔哩_bilibili DVI电路设计 1、DVI的简介 DVI(Digital Visual Interface)&#xff0c;即数字视频接口。它是1998年9月&#xff0c;在Intel开发者论坛上成立的&#xff0c;由Silicon Image、Intel(英特尔)、Compaq(康柏)、IBM(国际商业机器公…

时序数据库:TDengine整体架构

文章目录 [toc]一、集群与基本逻辑单元1.主要逻辑单元2.节点之间的通讯3.一个典型的消息流程 二、存储模型与数据分区、分片1.存储模型2.数据分片3.数据分区4.负载均衡 三、数据写入与复制流程1.Master Vnode 写入流程2.Slave Vnode 写入流程3.主从选择4.同步复制 四、缓存与持…

五 超级数据查看器 讲解稿 列表功能2

五 超级数据查看器 讲解稿 列表功能2 点击此处 以新页面 打开B站 播放教学视频 点此下载 百度手机助手 下载地址4 讲解稿全文&#xff1a; 大家好&#xff0c;今天我们讲解一下&#xff0c;超级数据查看器列表界面&#xff0c;分为1-2两集。这是第二集 继续讲解弹出式菜单…

Linux环境(Ubuntu)上的防火墙工具使用方法

目录 概述 1 防火墙工具&#xff08;ufw&#xff09; 1.1 安装防火墙工具&#xff1a; 1.2 操作防火墙相关命令 2 ufw操作命令的范例 2.1 打开/关闭防火墙 2.1.1 打开防火墙 2.1.2 关闭防火墙 2.1.3 查询当前防火墙状态 2.1.4 允许选择的端口访问 2.1.5 允许选择固定…

【数据结构】线性表的定义及基本操作

文章目录 前言线性表的定义线性表的基本操作基本操作其他常用操作 总结 前言 数据结构的三要素是逻辑结构、数据的运算、存储结构&#xff08;物理结构&#xff09;&#xff0c;存储结构不同&#xff0c;运算的实现方式也不同。 本次文章包括线性表的定义和基本操作&#xff0…

java零基础入门-map(上)

一、教学目标 掌握何为map能够说出map集合的特点。能够使用map集合添加元素、删除元素等伴生方法。 二、正文 1、概述 说起map&#xff0c;想必大家并不陌生吧。之前我在讲Collection集合的时候&#xff0c;我是给大家提过一嘴&#xff0c;我说Collection集合被称为单列集合…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的人群密度检测系统(深度学习模型+UI界面+训练数据集)

摘要&#xff1a;开发人群密度检测系统对于公共安全等领域具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个人群密度检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模型…

07-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0&#xff1a;AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法&#xff1a;同步等待队列条件等待队列 1&#xff1a;AQS应用之ReentrantLockReentrantLock如何实现synchronized不…