数据结构之线性表

一、线性表的定义及特点

1)线性表(list)定义:包含若干个具有相同数据特征的数据元素构成的线性序列。

线性表L可以用二元组形式描述:L=(D,R),其中D为数据集合(data),R为关系集合(relation)。

2)线性表的特点:在线性表的数据集合D中,除第一个元素a_{0}外,每一个元素有且只有一个直接前驱元素,除了最后一个元素a_{n}外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。

例,设有一个顺序表L={1,2,3,4,5,6},则它的关系如图所示

使用L=(D,R) 表示,则D = {1,2,3,4,5,6}(n=6)

                                   R = {<1,2><2,3><3,4><4,5><5,6>}

二、线性表的顺序存储结构

1、线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构的线性表称为顺序表。

2、顺序存储的特点:逻辑上相邻的两个元素,在存储位置上也是相邻的。

顺序存储的不足:插入和删除操作的时间复杂度大

特点:逻辑上相邻的两个数据元素,其物理位置也是相邻的。

3、顺序表的存储结构

在c语言当中,可以借助一维数组来描述顺序表L:

#define maxsize 100//顺序表的最大长度typedef int datatype;//datatype的类型根据实际情况而定,这里假定为int
typedef struct 
{datatype data[maxsize];int last;     
}sqlist,*sqlink;

4、创建一个空的顺序表L:


sqlink list_create()
{sqlink L;if((L = malloc(sizeof(sqlist))) == NULL) {printf("malloc failed\n");return L;}//初始化顺序表memset(L,0,sizeof(sqlist));//引用memset函数,要引用"stdlib.h"头文件L->last = -1;return L;
}

5、清空顺序表

//ret 0-清除成功 -1-清除失败
int list_clear(sqlink L) {if(L == NULL)return -1;memset(L,0,sizeof(sqlist));L->last = -1;return 0;
}

6、查找数据元素位置

int list_locate(sqlink L)
{int list_locate(sqlink L, data_t value){int i;for(i = 0;i <= L->last;i++) {if(L->data[i] == value)return i;}return -1;
}

7、判断顺序表是否为空

8、求线性表长度

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之StepperItem组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、StepperItem组件 用作Stepper组件的页面子组件。 子组件 无。 接口 St…

【前端素材】bootstrap4实现葡萄酒品牌电商网站Bidouno(附带源码)

一、需求分析 葡萄酒品牌电商网站是一个专门销售葡萄酒的在线平台。它提供各种类型和品牌的葡萄酒&#xff0c;包括红葡萄酒、白葡萄酒、起泡酒等。葡萄酒品牌电商网站的功能可以从以下几个方面来分析&#xff1a; 1. 提供多样化的选择&#xff1a;葡萄酒品牌电商网站通常会提…

ONLYOFFICE文档8.0新功能浅探

ONLYOFFICE文档8.0新功能浅探 上个月末这个月初的几天&#xff0c;ONLYOFFICE版本更新了&#xff01;更新到了一个比较整的大的版本号&#xff0c;8.0版本&#xff0c;看来这个生产力工具的升级速度基本上能保持每年两个版本号的速度&#xff0c;还是很快的&#xff0c;一般来…

如何在 Mac 上恢复永久删除的文件:有效方法

您是否错误地从 Mac 中删除了某个文件&#xff0c;并且确信它已经永远消失了&#xff1f;好吧&#xff0c;你可能错了。即使您认为已永久删除计算机上的数据&#xff0c;仍有可能将其恢复。 在本文中&#xff0c;您将了解如何在 Mac 上恢复永久删除的文件&#xff0c;并了解增…

github使用问题汇总

1. Permission denied 1.1. 问题描述 Permission denied (publickey). fatal: Could not read from remote repository. 1.2. 解决方法 生成公钥 ssh-keygen -t ed25519 -C "your_emailexample.com" 点击回车三次 Generating public/private ed25519 key pair. …

排序算法---归并排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 归并排序是一种常见的排序算法&#xff0c;它采用了分治的思想。它将一个待排序的数组递归地分成两个子数组&#xff0c;分别对两个子数组进行排序&#xff0c;然后将排好序的子数组合并成一个有序数组。 具体的归并排序过…

Netty连接通道中的Channel参数模型

ChannelOption(Channel中的连接参数) ChannelOption.SOBACKLOG ChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数&#xff0c;服务端处理客户端连接请求是顺序处理的&#xff0c;所以同一时间只能处理一个客户端连接&#xff0c;多个客户端来的时候&…

CentOS 安装 redis 7.2

nginx官网 https://redis.io/download/ 把鼠标放到这里&#xff0c;复制下载地址 在服务器找个文件夹执行命令 wget https://github.com/redis/redis/archive/7.2.4.tar.gz tar -zxvf 7.2.4.tar.gz make make install 看到这几行就说明安装成功了 不放心的话再查看下b…

Git详细讲解

文章目录 一、Git相关概念二、本地分支中文件的添加 、提交2.1 文件状态2.2 创建Git仓库2.2.1 git init2.2.2 git clone 2.3 添加操作(git add)2.4 提交操作&#xff08;git commit&#xff09;2.5 撤销操作2.5.1 撤销 add操作2.5.2 撤销 commit操作2.5.3 覆盖上一次的commit操…

Conda历史版本下载地址和python对应关系

一、前言 因为Conda安装版本问题&#xff0c;带来了很多问题&#xff0c;虽然不能直接确定二者之间的关系&#xff0c;但是安装指定版本的conda,确实是一个比较好的方法。特此记忆。 二、下载地址 下载最新版本&#xff1a;Free Download | Anaconda 下载历史版本&#xff…

CTF--Web安全--SQL注入之‘绕过方法’

一、什么是绕过注入 众所周知&#xff0c;SQL注入是利用源码中的漏洞进行注入的&#xff0c;但是有攻击手段&#xff0c;就会有防御手段。很多题目和网站会在源码中设置反SQL注入的机制。SQL注入中常用的命令&#xff0c;符号&#xff0c;甚至空格&#xff0c;会在反SQL机制中…

【数据分享】1929-2023年全球站点的逐月平均风速(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…