数据结构(C++)——顺序表
顺序表和链表的比较
1.存取方式
顺序表可以随机访问,而链表只能从表头顺序查找。(因此经常查找顺序表某一个元素时,顺序表更适合)
2.逻辑结构与物理结构
顺序表中,逻辑上相邻的元素,其物理存储位置也相邻。链表中,逻辑相邻的元素,其物理存储位置不相邻。
3.查找、插入和删除操作
按值查找时,顺序表链表时间复杂度都为O(n)。
按序号查找时,顺序表时间复杂度为O(1),而链表时间复杂度为O(n)。
插入和删除元素中,顺序表平均移动半个表的长度,而链表只需要改变一下指针域的值就可以了。
(因此,当线性表经常进行插入和删除元素时,选链表更合适)
4.空间分配
顺序表在静态存储分配的情形下,存储空间装满了就不能扩充;链表就不存在这个问题。
顺序表结构
#define MaxSize 50 //顺序表的最大长度 typedef char ElemType; //ElemType为数据类型 typedef struct //顺序表的静态表示
{
ElemType data[MaxSize];
int length;
}SqList;
顺序表的初始化
SqList CreateList() //初始化顺序表
{
SqList L;
L.length=0; //初始化要将顺序表的长度初始化为0 return L;
}
向顺序表插入元素
bool InsertList(SqList &L,int i,ElemType d){ //插入元素
if(i<1||i>L.length+1||i>MaxSize) //将数据插入在第i个位置
{ //插入的位置错误,返回false
return false;
} for(int j=L.length;j>=i;j--) //从后往前,将下标i-1及以后的元素向后移一个位置,为插入的元素腾位置
{
L.data[j]=L.data[j-1]; //插入元素是向后移动
} L.data[i-1]=d; //低昂待插入的元素放的要插入的位置
L.length++; //插入完成后,长度加1 return true; //操作成功返回true
}
删除顺序表中的元素
bool DeleteList(SqList &L,int i,ElemType &e){ //删除顺序表中的元素
if(i<1||i>L.length){
return true; //下标错误时,返回false
} e=L.data[i-1]; //返回待删除的数据 for(int j=i;j<L.length;j++){ //从第i个开始向后
L.data[j-1]=L.data[j];
} L.length--; //删除后长度减短 return true; //操作完成,返回true
}
查找顺序表中的元素
int FindList(SqList &L,ElemType e){ //返回第一个与e相等的元素的次序号,找不到返回0
for(int i=1;i<=L.length;i++){
if(L.data[i-1]==e){ //判断第i个元素是否等于e
return i; //等于则返回位置
}
} return 0; //遍历完顺序表还找不到 返回0
}
显示表内元素
void PrintList(SqList &L){
for(int i=0;i<L.length;i++)
{
cout<<L.data[i]<<' ';
}
}
数据结构(C++)——顺序表的更多相关文章
- hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)
基础数据结构——顺序表(2) Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...
- [Python] 数据结构--实现顺序表、链表、栈和队列
说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...
- [数据结构]C#顺序表的实现
在数据结构的学习当中,想必C++可能是大家接触最多的入门语言了 但是C#的数据结构却很少看到,今天我写了一个C#顺序表的顺序存储结构 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是 ...
- 【PHP数据结构】顺序表(数组)的相关逻辑操作
在定义好了物理结构,也就是存储结构之后,我们就需要对这个存储结构进行一系列的逻辑操作.在这里,我们就从顺序表入手,因为这个结构非常简单,就是我们最常用的数组.那么针对数组,我们通常都会有哪些操作呢? ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- 数据结构之顺序表,c#实现
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- Java——数据结构(顺序表)
这是一个顺序表的类,初始化的时候就已经确定了表的长度,之后不能添加数据,因为使用的是数组存储的数据,不过这个表的类型是泛型的. public class List { private Object[] ...
- javascript数据结构之顺序表
关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...
随机推荐
- Redis散列(Hash)的相关命令
散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...
- SpringBoot普通消息队列线程池配置
1 package com.liuhuan.study.config; 2 3 import com.google.common.util.concurrent.ThreadFactoryBuilde ...
- Spring框架分为哪七大模块,各模块的主要功能作用是什么
七大模块,如下: 1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性 ...
- 一文了解.Net Core 3.1 Web API基础知识
一.前言 随着近几年前后端分离.微服务等模式的兴起,.Net Core也似有如火如荼之势 ,自16年发布第一个版本到19年底的3.1 LTS版本,以及将发布的.NET 5,.NET Core一路更迭, ...
- 这么设计,Redis 10亿数据量只需要100MB内存
本文主要和大家分享一下redis的高级特性:bit位操作. 本文redis试验代码基于如下环境: 操作系统:Mac OS 64位 版本:Redis 5.0.7 64 bit 运行模式:standalo ...
- java调用matlab生成exe文件
一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...
- Centos-清屏命令-clear
clear 清理屏幕输出 相关快捷键 ctrl + l
- 剑指offer-字符串&数字规律
1. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123",&q ...
- helm部署的服务如何修改配置
关于helm部署服务 在Kubernetes上进行容器化部署时,使用helm可以简化操作,以部署Jenkins为例,只需要以下命令即可完成部署: helm install --namespace he ...
- Flutter 开发从 0 到 1(四)ListView 下拉加载和加载更多
在<APP 开发从 0 到 1(三)布局与 ListView>我们完成了 ListView,这篇文章将做 ListView 下拉加载和加载更多. ListView 下拉加载 Flutter ...