【自考】 数据结构考前总结 【CH1-CH3】

CH1   数据结构概论

1.  逻辑结构:集合(CH6 查找表),线结构(CH2 线性表 、CH3 栈、队列、数组),树结构(CH4 树和二叉树),图结构(CH5 图)

2.  存储结构:顺序存储、链式存储(代码:初始化、插入、删除)、索引存储、散列存储。

3.  算法:规定求解给定问题所需处理步骤及其执行顺序。

4.  算法的性质:正确性、易读性、时空性、健壮性。

5.  算法的时间复杂度是算法输入规模的函数。

6.  数据、数据元素(线性表中特性相同)、数据项(域,字段)

 

CH2 线性表  CH3 栈、队列、数组

1. 单链表的初始化

LinkList InitateLinkList( )
//建立一个空的单链表
{
   // 声明类型
   LinkList head;
   // 动态创建malloc一个节点,它是头结点
   head = malloc(sizeof(Node)); 
   // 设置结点的数据域和指针域
   head -> next = NULL;
   
   return head;
}

  有些话儿要说:

  head = malloc(sizeof(Node)); 

    sizeof(Node)获取和结构体Node空间大小一致的地址空间
   扩展:

    创建指向节点的指针的语句

    eg: p = (LkQueNode *)malloc(sizeof(LKQueNode))   [课本 P86]

    获取结构体链队列结点的地址空间大小,动态创建该结构体的一个实例,获取该实例的地址,将地址赋值给p.

    链式存储方式在其他复杂的逻辑结构上的运用时(如:队列,栈,图,数) ,创建的是指针。

 

    2. 栈和队列

        本质是线性表,表头(栈底和队头,可以不存储数据或者存储公共数据,如:length)。

        栈       什么先出?  后进先出

        队列   什么先出?  先进先出

 

   3.  假溢出 顺序队列,进一个rear++,出一个front++。

   4.  循环队列,牺牲一个存储空间来区分队首和队尾。因为本质是线性表,front指的是表头,表中第一个数据元素的前一个。

        rear = (front + CQ.length) % m. 

        队列空 CQ.rear = CQ.front       队列满  (CQ.rear +1)%m=CQ.front

 

   5.   双向循环链表中插入结点

         口诀: 先积极主动向环境介绍自己,再让环境接纳自己。

         若 新插入结点是由工作指针 s 所以,开始是 s =... , s = ... , 然后是 ... = s, ...= s.

 

   6.  双向循环链表为空     孤单的头结点抱紧了自己,左手(piror)抱自己,右手(next) 抱自己。

   7.  出栈和取栈顶元素的区别  Push(压,入栈),Pop(像 泡泡一样往上冒)

   8.  压缩存储

       稀疏矩阵,三元组表示法 (i , j , v)

       三元组表 ((Ai1,Aj2 , v1),(Ai2 , Aj2 , v2), ... ,( Ain , Ajn , vn))

 

 

你可能感兴趣的:(自考)