【数据结构】顺序表:尾部操作我很行,随机访问我超快!!!

1.顺序表的模拟实现2.顺序表的优缺点3.顺序表的OJ题目练习
摘要由CSDN通过智能技术生成

顺序表的模拟实现

在这里插入图片描述
 
 
在这里插入图片描述


 

1.线性表

  线性表 (linear list) 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…

  线性表在逻辑结构是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的

 

💡ps:

  逻辑结构:想象的该数据结构在内存中的存储方式,逻辑结构便于我们的思考。

  物理结构:实际的该数据结构在内存中的存储方式。

例如,C语言中的二维数组int arr[M][N]

逻辑结构:M行,N列的元素集合,不是连续存放的

物理结构:1行,M*N列的元素集合,是连续存放的

 

线性表在物理上存储时,通常以数组和链式结构的形式存储

在这里插入图片描述

 

2.顺序表

 

2.1概念结构

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改

顺序表一般可以分为:

  1. 静态顺序表:使用定长数组存储元素。(静态数组)

    在这里插入图片描述

  2. 动态顺序表:使用动态开辟的数组存储。(malloc动态开辟空间)

    在这里插入图片描述

     

2.2顺序表的模拟实现

静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表

SeqList.h中的声明(因为需要通过函数来修改顺序表,所以要传址)

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int SLDateType;

//顺序表的成员
typedef struct SeqList
{
   
	SLDateType* a;//顺序表的首元素地址
	size_t size;//顺序表的数据个数
	size_t capacity;//顺序表的容量
}SL;

void SLInit(SL* ps);//顺序表的初始化

void SLDestroy(SL* ps);//顺序表的销毁

//尾部操作
void SLPushBack(SL* ps, SLDateType x);//尾插
void SLPopBack(SL* ps);//尾删

//头部操作
void SLPushFront(SL* ps, SLDateType x);//头插
void SLPopFront(SL* ps);//头删

//中间
size_t SLFind(SL* ps, SLDateType x);//查找(返回下标)
void SLInsert(SL* ps, size_t pos, SLDateType x);//在pos前插入数据x
void SLErase(SL* ps, size_t pos);//删除pos处的数据

void SLPrint(SL* ps);//打印顺序表

 

SeqList.c结构功能实现:

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值