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

目录

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;最…

网络协议UDP详解

UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种无连接的、不可靠的、面向数据报的传输协议。它提供了一种简单的数据包交换服务&#xff0c;适用于一些对数据传输时延要求较低、但对数据可靠性要求不高的应用场景&#xff0c;如音频、视频…

C# 异步调用aysnc await

一、基本概念 在C#中&#xff0c;async和await关键字用于异步编程。异步编程允许程序在执行I/O密集型操作时不会被阻塞&#xff0c;从而提高程序的性能和响应性。 async关键字用于定义异步方法&#xff0c;表明该方法可能包含await表达式&#xff0c;并且可以在其执行期间异步…

ubuntu20.04 创建ros环境、创建rospackage

roswiki教程&#xff1a;https://wiki.ros.org/cn/ROS/Tutorials 环境准备 安装ros环境 这里选择noetic版本的ros&#xff0c;安装步骤参考&#xff1a;https://zhuanlan.zhihu.com/p/662284005 创建工作空间 这里我在用户目录下创建catkin的工作目录catkin_ws &#xff0…

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…

windows、Linux下操作命令

1、Regedit 查看策略表 2、Msconfig 查看系统配置 3、Taskmgr 启动任务管理器 4、Eventvwr,msc 打开日志的命令5、Gpedit.msc 打开本地组策略6、Compmgmt.msc 计算机管理 7、Lusrmgr.msc 打开用户与组 8、Taskschd 打开计划任务 9、Net user xxx /add 添加用户 10、Net …

CSS浮动引起的问题和解决方案

问题&#xff1a; 高度塌陷&#xff1a;当所有的子元素浮动的时候&#xff0c;且父元素没有设置高度&#xff0c;这时候父元素就会产生高度塌陷。 解决方案&#xff1a; 1&#xff1a;给父元素单独定义高度 缺点&#xff1a;子元素高超过父级时&#xff0c;会出现溢出 …

如何系统的学习Python——装饰器

装饰器是 Python 中强大而灵活的功能&#xff0c;用于在不修改函数代码的情况下&#xff0c;增强或修改函数的行为。装饰器通常用于在函数执行前或执行后添加一些额外的功能。 下面是装饰器的基本概念和使用方法&#xff1a; 1. 函数的基本结构&#xff1a; 在理解装饰器之前…

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;能够反映…

模拟电子技术实验(一)

单选题 1.本实验实际操作步骤都有哪些&#xff1f; A. 实验箱上的电压测量、实验箱上的电位器测量、5K、1 0V方波信号测 量。 B. 实验箱上的电压测量、实验箱上的电位器测量、5K、1 0V正弦波信号测 量。 C. 实验箱上的电压测量、实验箱上的数码管测量、5K、1 0V方波信号测 量…

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

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

LeetCode题练习与总结:搜索旋转排序数组

一、题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], ..., nums[n-1], nums[0], n…

OpenAI:ChatGPT API 文档之 Embedding

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