回顾一下数据结构线性表

来源:互联网 发布:好用的数据采集器软件 编辑:程序博客网 时间:2024/06/05 03:42

        今天回顾了一下数据结构中的顺序表和链表,用C实现,不得不说C这种面向过程的语言在学习数据结构的时候具有得天独厚的优势,通过指针,可以很清楚的知道链表的连接方式。

            因为有一段时间没有写C的东西了,数组怎么传参数都忘了,真是罪过。复习了一下,在编写程序的过程中,反思了一下,现在总结如下。

1》顺序表

              顺序表说白了就是数组是指用一组地址连续的存储单元依次存储数据元素的线性结构因为在内存中一次开辟足够的地址空间,所以在初始化的时候,没有办法确定会不会有空间的浪费,因此这是一种浪费空间换取时间的存储模式,因为按照数组的存储方式,只要知道下标就可方便快速的查找到数据,时间复杂度为O(1)。另外在传参过程中,如果在主函数定义了顺序表,将指向顺序表的头指针传递进函数,在函数内的数据操作还是基于数组类型的操作,即通过下标进行数值的改变。并且无需返回,在函数中改变的数值会在顺序表中作出相应的改变。在使用过程中,就发现了这几个特点,可能写的程序较简单,所以还有些特质没发现吧。

2》链表

            链表就有意思多了,在数据存储方面,他能充分解释见缝插针这个词语,也就是说对于内存中,如果有足够的空间可以开辟一个节点,那他就有可能在这里占用一个节点的空间,上下相连全靠指针域。每个节点都包括两部分,一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。在使用的过程中,我发现链表的插入非常简单,由于是非线性存储,在插入的过程中只要使插入位置的前驱节点指向当前插入的节点,使插入的节点指向当前插入位置的原节点,就好比说在插队的过程中,插入的节点作为当前插入位置节点的女朋友插入进队伍,但是并不用让后面的人依次往后退,可能她只是在旁边看着自己男朋友排队而已,在使用的时候她才上去说:“哎呀,我在这呢。”好吧,可能比喻不太恰当,但是我就是这样理解的,在此时插入的时间复杂度就是O(1),不像上述顺序表那样在插入后还要赶人,那么麻烦。

          基本总结如上,么么哒(づ ̄ 3 ̄)づ

0 0