数据结构基础

数据结构图:


1、线性表
   概念:数据元素的排列方式是线性。
   分类:分类规则是根据上图中元素的存储结构来划分的。
1)顺序表

   基本思想:元素的存储空间是连续的。在内存中是以顺序存储,内存划分的区域是连续的。存储结构如下图:


2)链表

   基本思想:元素的存储空间是离散的,单独的(物理),它们可以通过在逻辑上指针的联系使得它成为了整体的链表。存储结构如下图:


  1.单链表:


   2.循环链表:


  3.双链表(双向循环链表):


三者的区别(从上面三个图我们可以总结出来):
    1、它们都有数据域(data(p))和指针域(next(p)),但是从图中可以看出双链表有两个指针域,一个指向它的前节点,一个指向它的后节点。
    2、单链表最后一个节点的指针域为空,没有后继节点;循环链表和双链表最后一个节点的指针域指向头节点,下一个结点为头节点,构成循环;
    3、单链表和循环链表只可向一个方向遍历;双链表和循环链表,首节点和尾节点被连接在一起,可视为“无头无尾”;双链表可以向两个方向移动,灵活度更大。


扫描二维码关注公众号,回复: 169095 查看本文章

2、栈

基本思想:后进先出(先进后出)即栈中元素被处理时,按后进先出的顺序进行,栈又叫后进先出表(LIFO)。

如下图所示:


  举例:放在箱子里的一摞书,只能从书顶上拿走一本书,书也只能放在顶上。


3、队列

  基本思想:先进先出即先被接收的元素将先被处理,又叫先进先出表(FIFO)。如下图所示:


  举例:排队进车站时,安检行李,先进去的最先出来,后进去的后出来。
分类:
1.顺序队列
顺序队列的操作,要判断队满和队空的标志,从图中我们可以总结得到:
      1.队空:head = tail
      2.队满:tail = m
2.循环队列
循环队列的操作,要判断队空和队满的情况,从图中我们可以总结得到:
    1.队空:head = tail

    2.队满:tail + 1 = head(在队列中会留一个空着的空间,所以要加1)




猜你喜欢

转载自blog.csdn.net/ght886/article/details/79975466