数据结构复习-线性表知新

本来想写在纸上的,不过估计不怎看,还是写在云上,哪天无聊时看看,
**温故而知新,可以为师矣。**这些都是之前没有太过在意的地方,细细推敲之后能发现许多有趣的东西

1.随机访问,顺序访问

数据结构复习-线性表知新_第1张图片

2.malloc 和 new

 void * p1;
 int *p2;
 p1 = p2;   //p1变成了一个int型的指针了,void型指针可以自动转化为其他类型的指针,前提都是指针

详细的malloc放到之后的文章说,

3.数据元素和数据项和数据结构 数据类型

这里写的少一些,以后慢慢增加,例如某个顺序表的,数据项组成数据元素,

#define ElemType int;

常在开始定义ElemType类型,或者自定义类型,为了以后的操作方便
数据结构复习-线性表知新_第2张图片

4.有关算法的健壮性

由于编程语言选用的不同,try catch 结构可能不同,
不过,对于算法仍然保存最基础的纠错功能,即通过简单的判断,对一些非法数据做出判断
例子1,出栈,栈空,则结束

int Stack_Push(SqStack &S,char e)
{
     
  if (S.top-S.base==S.stacksize)//连续内存地址,
     return ERROR;/* code */
   *S.top=e;S.top++;//优先级,*S.top=e;之后S.top++;
   return OK;
}

例子2,向顺序表插入一个元素,

1.表空时
2.插入的位置非法时
3.表已满时
为以上三种情况时,都不能插入,你必须对以上的基本情况进行考虑,进而完成最基础的纠错,算法要有健壮性,对输入的数据检查后分流处理

bool ListInsert_Sqlist(Sqlist &L,int i,ElemType e)
{
     
   if (i<1 || i>L.length+)
   return false;
   if ((L.length>=Maxsize))
   {
     
      return false;
   }
   //code
   
}

5.顺序表&的紧凑形式

我们说的顺序表链表一般不是空的,当它空的时候就要删除它,同时改变length的长度,所以,不要留空,
数据结构复习-线性表知新_第3张图片

6.C/C++如何返回多个值?

这里,C\C++不能返回多个值,只能 return a value or function ,那怎么可以返回多个值呢?最常规的办法,就是用指针和引用操作,简单的说,通过对地址的操作
python函数可以返回不定长的数据

7.链表的头结点有啥用?能不能不要?

作用:
①头结点的数据域可以不存储任何信息,也可以存取length信息

防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.

保证算法设计的统一性,减少分支,减少对特殊情况的考虑。为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性! 单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。

操作方便。链表有头指针,当我们需要使用链表中的数据时,我们可以使用遍历查找等方法,从头指针指向的结点开始,依次搜索,直到找到需要的数据;反之,若没有头指针,则链表中的数据根本无法使用,也就失去了存储数据的意义。

当然头结点会占用额外开销,但与他的好处相比,并没有什么。

8.单链表数据结构复习-线性表知新_第4张图片

需要注意以下几点:

1. 双链表的尾结点的next值为null

2. 循环链表的rear(next)指向头结点,即是L

3. 其他的没有什么,看看题目说的是什么条件

9.静态链表

静态链表,用一个顺序表来表示链表,后面还会遇到顺序存储的二叉树,暂时想不到有什么用?
缺点:
1.顺序结构占用大量连续空间,比一般的顺序表占用空间还多
2.会出现部分空间浪费的形式,不是紧凑形式

数据结构复习-线性表知新_第5张图片

看起来很像哈夫曼树创建的过程,
优点是:
并非所有的语言都支持指针,因此这也能提供一个不错的思路
*10. 链表中的 Lnode p和p到底是啥

11,今天开始学习linux
~2021.5.3 软件工程专业,岂能不会Linux,~~~

名称 说明
unix unix商业化的,unix系统大多是与硬件配套的,另外,windows和linux·都参考了unix
。multi uni
Linux linux免费的,开源的,可运行在多种硬件上
GNU(读音与new相似) gnu计划,为linux提供软件资源

你可能感兴趣的:(算法,C++,链表,数据结构,指针)