目录
前言
一、概念
二、结构
三、动态顺序表接口实现(命名参考C++的STL)
四、顺序表的优点与缺点
五、源码+详细注释(C语言实现)
1.SeqList.h
2.SeqList.c
3.SeqListTest.c(测试用例)
前言
顺序表是非常基础的数据结构,想必大家已经在日常学习过程中与它有所接触,比如对一个数组进行增删查改等操作,如果我们把数组和一个记录数据个数的变量放在同一个结构体中,再将增删查改分别封装成函数,提供其接口,这样一个简单的静态顺序表就完成啦。是不是感觉这个过程有一丢丢的熟悉?这不就是通讯录、成绩管理系统等小项目的实现方式吗?对的,所以说学会了顺序表,那么完成一个像通讯录、成绩管理系统……这样的小项目也就变的非常简单啦。
一、概念
线性表采用顺序存储的方式存储就称之为顺序表,顺序存储是指用一段物理地址连续的存储单元依次存储相邻数据元素的线性结构(这是顺序表的一大优势,这让它可以做到随机存取)。
顺序表在计算机内存中是以数组的形式保存,在数组上完成数据的增删查改,可以将顺序表简单理解为数组。
二、结构
顺序表一般可以分为:静态顺序表、动态顺序表。
·静态顺序表:使用定长数组存储元素:
//静态顺序表结构体的两个关键元素:存储数据的数组、记录数据个数的变量 #define N 100//使用宏定义便于修改静态顺序表的容量(define 后面没有";") typedef int SLDataType;//重定义要存储的数据的数据类型,可以根据我们的需要来修改要存储数据的数据类型(typedef 后面有";") typedef struct SeqList { SLDataType arr[N]; int size;//记录数据个数 }SL;
讯享网
静态顺序表的缺点非常明显:当定义的容量N太小,不够用,N太大,又浪费空间。那我们不禁思考:我们可不可以先开辟一个较小的空间,当容量不足时,容量自动扩大一点呢?
结合我们所学过的动态内存分配,我们考虑使用一个动态开辟的数组来解决这一问题,将原来结构体的静态数组改变为动态开辟的数组,加上一个变量专门记录容量,这就形成了一个动态顺序表的结构体。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53313.html