一个简单顺序表的实现(c语言版)

顺序表可以说是数据结构的入门,本文将从代码的角度讲述一个简单动态顺序表的实现(顺序表的基本操作)。(声明,up主纯编程小白,写这篇文章仅当巩固知识,检验学习成果,嘿嘿,就是玩(●'◡'●) )

一:预处理阶段

        我们需引入两个头文件,定义顺序表的初始化长度,以及定义自己的bool类型(看个人喜好),第一行代码是为了能让我们使用scanf函数。

82b4316f20cd4497ac1aa70b2481adf0.jpg

 

预处理

二:学生类型的创建以及定义顺序表

        我们创建一个简单的学生类型并定义顺序表

e935403bc70f4f0b817cc67ac320a4f5.jpg

 

学生类型

b367a0909597484688423ca8f4c37954.jpg

 

创建顺序表

三:顺序表的初始化

        

ce59f3f0199446fdb9d6e28b475f758e.jpg

 

初始化

这里需要注意内存开辟的问题

四:顺序表的打印

        要验证我们的操作是否真确,打印函数是必不可少的

4c5e43b8bda24beba7352a92f9fc0590.jpg

 

d191e454dce9461dbe7ada5967430c78.jpg

 

 

五:顺序表的扩容操作

        当顺序表的元素满时或大小不满足需要时,我们便需要对其进行扩容,使用两个参数,第一个传入顺序表的地址,第二个传入你需要增多的空间大小。我们这里使用realloc会更简单一些。

 

ada16e46b85548058abbf2aba6dc4b47.png

 

扩容

六:顺序表的真创建doge

该操作用于给顺序表添加元素,我们这里采用手动添加╮(╯▽╰)╭。使用两个参数,第一个参数传入顺序表的地址,第二个参数传入要添加的元素个数。

a8f13f1a79724251a1a1a25137088295.jpg

 

2e9706684eda41349fc5b2a9dd7a8c7a.jpg

 

73fecc66fc5d40aebdb0a2ead91223ec.jpg

 

938b2f6968a54d65aac7a2ad9340f36d.jpg

 

不要忘了添加完元素,将表长更新

七:顺序表的排序

只演示按成绩用冒泡排序进行升序,也可按学号等(可以在函数中使用多分支来选择排序的依据)。

963a8f75de964fbcac0ea11206e0cb51.jpg

 

c699fda7b99b4960a6e279a4e7d6f055.jpg

 a8d5cddcba8f4d86bfa2bb21b1dabe19.jpg

八:顺序表的插入

顺序表的插入操作,每插入一次,我们都要将其后的元素往后移一位。我们还需要考虑是否满足插入条件。

ef29b417ff514d91a1e8465f0d0e847a.jpg

 

2e99d400941a4540b454e5c159092635.jpg

 

 

84f90c542a194a77b4e7b11caccfa9fd.jpg

 

f7cce8678a6b43e6871246d7ed954807.jpg

 

23c35dfeb2494cdbba19edcf31643835.jpg

 

99482c263e1343819ba0c6cfab14fe3e.jpg

 

f057d58cea2b4858bd7e133d507ed169.jpg

 

不要忘了表长加1哦

九:顺序表的删除

顺序表的删除操作比较简单,只需要移位即可。

735fdad759c34442a12beb22aed65529.jpg

 

f419967418954ec3bc1d1ff24e36da9c.jpg

 

 

从要删除元素的位置开始进行覆盖,前一位元素等于后一位元素

九:顺序表按指定元素查找

由于在我们写的学生类型中,只有学号具有唯一性,所以我们按学号进行查找。需要注意的时,我们的学号定义为char类型,于是我们需要对其进行强制转换为int型,以方便判断。(早知道直接定义为int型了,算了懒得改了┭┮﹏┭┮)。

23f885d5abd94e109f3f63f81cbae9c6.jpg

 

 

3595136f32914ad88a288cc8264defa0.jpg

 

c6d70f8373e14c96a84a681d5b906ff9.jpg

 

找当指定元素,我们便结束遍历。

十:顺序表的按位查找

由于顺序表的特性,按位查找实在十太简单了。

e09c6b66fee84783a72835170682a051.jpg

 

f92c4c7703f84f1c81b6f4f82a38b214.jpg

 

c473c78a05214937b109513d58a389f6.jpg

 

终于写完了,一边敲代码,一边写这个,一个晚上就过去了。希望能对你们有点用处。加油(ง •_•)ง,编程可比打go有趣多了。

时间:2024, 4 ,11 23:16

本文禁止转载或摘编

本文为我原创

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值