线性表——顺序表的初始化,插入、删除、按位按值查找以及时间复杂度

本文介绍了线性表的概念,包括其定义、顺序表的实现方式,以及静态和动态数组分配的优缺点。重点讨论了顺序表的初始化、销毁、插入、删除操作,并分析了按位和按值查找的时间复杂度。同时,文章强调了实现数据结构基本操作的意义,如团队协作和减少重复工作。
摘要由CSDN通过智能技术生成

线性表

相同类型+有限+序列
表长、空表、位序、表头表尾元素、直接前驱后继

初始化
InitList
销毁
DestroyList
插入
ListInsert
删除
ListDelete
按值查找
LocationElem
按位查找
GetElem
表长
Length
输出
Print
判空
Empty
自己定义操作

⭐为什么要实现数据结构基本操作?

1、团队合作编程,定义数据结构让别人能够很方便的使用(封装)
2、将常用的操作/运算封装成函数,避免重复工作,降低出错风险

在这里插入图片描述

顺序表

1、顺序表――用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
在这里插入图片描述
2.1、静态数组分配

#define MaxSize 10						//定义最大长度
typedef struct{
   
	ElemType data [MaxSize];			//用静态的“数组”存放数据元素
	int length;							//顺序表的当前长度
}SqList;								//顺序表的类型定义(静态分配方式

在这里插入图片描述

#include<stdio.h>
#define MaxSize 10			//定义静态数组的最大长度
typedef struct {
   
	int data[MaxSize];
	int length;
}SqList;

void InitList(SqList &L){
   
	L.length = 0;				//顺序表的初始长度为0
}

int main(){
   
	SqList L;
	InitList(L);
	for(int i=0;i<MaxSize;i++){
   
		printf("data[%d] = %d\n",i,L.data[i];
		return 0;
	}

静态分配的局限性:
1、数组满了也不能够重新改变数组长度或者加新的值。
2、申请的空间太多造成资源浪费。

2.2、动态分配

#define InitSize 10						//顺序表的初始长度
typedef struct{
   
	ElemType *data;						//指示动态数组分配的指针
	int MaxSize;						//顺序表的最大容量
	int length
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值