C语言写顺序表

本文介绍了顺序表的结构,特点以及实现。顺序表使用连续的存储单元存储数据元素,支持随机访问,尾部插入删除操作高效。然而,其他位置的插入删除效率较低,增容时可能造成空间浪费并涉及数据迁移。
摘要由CSDN通过智能技术生成

1. 顺序表的结构

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

2. 顺序表的特点

(1)空间连续。
(2)支持随机访问。
(3)尾插尾删操作时间复杂度都是O(1)。
(4)其他位置(除过尾部)插入删除都是0(n)。
(5)空间利用率高,不容易造成内存碎片。
(6)适合访问存储。
(7)增容代价大,增容一般是呈2倍增长,势必会有一定的空间浪费。
(8)增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗。

3.顺序表的实现

1. 静态顺序表:使用定长数组存储。
#define N 100
typedef int SLDataType;
//静态顺序表
struct seqlist2
{
   
        SLDataType data[N];//定长数组
        int size;          //有效数据个数
}; 
//动态顺序表

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct seqList
{
   
        SLDataType* data; //数组指针
        int size;            //有效元素个数
        int capacity;//数组的空间
}seqList;       //sizeof(seqlist)=12

//初始化顺序表
void initseqList(seqList* sl);

//尾插
void seqListPushBack(seqList* sl, SLDataType val);

//尾删
void seqListpopBack(seqList* sl);

//检查容量
void seqListCheckCapacity(seqList* sl);

//打印
void seqListPrint(seqList* sl);

//访问任意位置的元素
SLDataType seqListAt(seqList* sl, int pos);

//判空
int seqListEmpty(seqList* sl);

//有效元素个数
int seqListSize(seqList* sl);

//头插
void seqListPushFront(seqList* sl, SLDataType val);

//头删
void seqListPopFront(seqList* sl);

//任意位置插入
void seqListInsert(seqList* sl, int pos, SLDataType val);

//任意位置删除
void seqListErase(seqList* sl, int pos);

//销毁
void seqListDestroy(seqList
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值