zoukankan      html  css  js  c++  java
  • 读谭浩强C语言数据结构有感(1)

    1.什么是数据结构?

    数据结构,就是我们计算机内部的运算,编程语言的基础工作模式吧,个人总结的 = = !!

    数据:说简单一点,就是计算机二进制机器码,然后通过一些复杂的操作,变为复杂的语言。

    数据元素:数据有集合和元素的区别,集合里的个体就是数据元素,相对应的就是数据结构。

    线性表:

    说简单一点,就是线性存储结构,每个表中有大量的元素,这些元素在物理位置中都是连接起来的。

    这些元素有直接前驱和直接后继。线性表的位置是相邻的。

    比如,位置1,位置2,位置3.。。。。。位置N。

    还有一点,线性表的数据不管有多么大,都是固定的,也就是说有一个终点。

    线性表的缺点:插入删除的时候,需要移动大量的元素。

    比如插入删除元素后,会移动插入或者删除后面的所有元素,从而造成时间复杂度的线性增加。

    链式存储结构:

    每一个节点有一个指针域和数据域,其中指针域指向的是这个元素的下一个后继,这样的往复循环

    就可以形成一个链表,当然,这和链式存储结构也有不同的地方,最大的不同就是他们的“地址”是不同的。

    链式存储结构是依靠指针来判断他的下一个元素的具体位置的,而线性表,则是根据地址的物理位置来判断的。

    打个最简单的比方,一个游戏,如果我想要去一个很远的地图。有2种方式:第一种,直接走路去,

    那么我就会经过这个地图的所有区域,直到到达这个地图,还有一种方式就是用CASH,商城里的,

    然后直接点那个地图,可以瞬间移动到我需要的地方。

    2种方式的优缺点很显而易见了,如果是采用链式结构的话,不论隔了多么远,我也只要轻轻鼠标一点,

    就可以到了,删除插入元素也是如此,如果插入或者删除元素的话,采用线性表的话,会移动和这个元素相关的元素的位置。如果是链式存储结构的话,我只要把这个元素插入或者删除,然后把以前元素的NEXT指向新插入的元素的NEXT,然后把这个新插入的元素赋给这个元素前的那个元素的指针就OK了。

     链表有一个指针域,指针指向的链表中的下一个元素。那么我们该怎么插入元素呢,在链表中。

    首先我们要想到,插入的元素是不是链表的头部,或者是在链表的尾部。或者在链表的中间,

    或者在A元素的前面或者后面。现在讨论一下中间部分插入元素的方法。

    首先让s->next=p->next 这句话的意思就是,把链表P的指向下一个元素的指针赋给s的指向下一个元素的指针。

    这样 s->next就变成了p->next,由于是在链表中间插入的,所以自然s->next就指向了链表中的下一个元素。

    p->next=s,这句话的意思:就是把s这个指针的值,让p->next指向s,从而前后2方面都融入了链表,从而使得成为了链表的一部分,这就是插入法。

  • 相关阅读:
    17.CSS 文本属性和字体属性
    15.CSS 浮动
    D. Same GCDs
    B. Infinite Prefixes
    D. 0-1 MST
    lambda表达式复习
    D. New Year and Conference
    C. New Year and Permutation
    D. Dr. Evil Underscores
    D. Minimax Problem
  • 原文地址:https://www.cnblogs.com/kmsfan/p/3913385.html
Copyright © 2011-2022 走看看