大话数据结构-线性表-顺序表

顺序表,原理和我们之前学的数组是对应的,这里的顺序指的是它的存储方式,这个表中的各个元素,依次存储在一段地址连续的区域中。

    先明:好的编程习惯是非常重要的,并且从一开始就最好尽量规范,否则,习惯不是很好改回来的,在此,往后的文章我有好的编程风格和习惯就【习惯】备注

    


    结构定义:


    上述代码,定义线性表的整体结构,该表有两个成员,一个是num,用来记实际表长度,还有一个数组,其中有10个元素。注:typedef是定义一种新类型,其中不能初始化值的。

    

    函数原型:

    

    【习惯】:先写好程序的整体框架,头文件,int main,return 0,函数原型,然后在函数定义的地方可以先{},如Lvoid Init(List *p){}而不写入代码,这样表示一个空函数,对程序编译没影响。然后实际编程的时候,一般是一个模块一个模块的实现,然后观察现象,再继续编辑的,而不是直接代码从头敲到尾再编译链接。

    在这个顺序表,先写好Init()函数,然后写好PrintList()的第一部分检测空表,然后就可以在main()中调用观察现象,作用是:我们要保证之前编写的代码是正确的,然后后面如果出错,那只能这次编译成功之后发生的了


    
    【习惯】:函数名,参数名,结构体名等尽量可以顾名思义的

    上述两个函数,Init初始化线性表,num = 0没有有效元素,PrintList,当num=0的时候不打印,其他情况,打印到下标为num-1的元素,因为num =1的时候,是从array[0]下标为0开始的。

    插入函数:

    





    1,先检查表是否空,如果空,不管它插入哪个位置(pos),都将把它放到array[0]

    2,如果不为空,检查pos值,它不能比1小或比num大

    注:这里如果满足1,2情况,用return 直接返回,那么便不执行后面的语句,没有返回值是因为这个函数定义为void型。

    3,接下来,用一个for循环,注意i的变化规律,将下标为pos的及以后的元素往后“挪一个位置”,注意这里为了防止值被覆盖,应该是从最后一个元素开始一个一个往后“挪”的。

    4,再将传入函数的值存到pos位的前一位元素中

    5,要注意,num++,其实这一句最好在编写者一部分代码块前,很容易漏掉


删除函数:


                原理是一样的,为空就不能删除了,只是这里for操作,是从pos-1,位置开始了,假设pos=3,即要删除array[2]元素,那么直接将array[2]用[3]的值覆盖,再一步一步到表尾。


    最后:推荐一下码农谷这个网站,是一个简单在线程序编译器,不可以调试,目前如果程序出错也没办法指示出错的行数,但是对我来说,我主要看中的是因为这个网站能够保存或更新我编写的代码,在线IDE很多,各有各的优缺点,大家百度后用用就知道了。

    

        最大的敌人,其实是自己

        与君共勉。

欢迎添加我的微信号:quick_snail,一起互相学习吧!

猜你喜欢

转载自blog.csdn.net/quick_snail/article/details/53772049