【算法笔记】第七章:数据结构专题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sd4567855/article/details/88077005

【算法笔记】第七章:数据结构专题

标签(空格分隔):【算法笔记】


第七章:数据结构专题

7.1 栈的应用

7.2 队列的应用

7.3 链表处理

7.3.1 链表的概念

数组:内存中取出一块连续的地址来存放给定长的数组。
链表:使用若干个结点组成,且结点在内存中的位置是不连续的。

struct node{
    typename data;//数据域
    node* next;//指针域
}

链表以是否存在 头结点 分为 带头节点的链表 和 不带头节点的链表。

7.3.2 使用malloc函数或者new运算符为链表结点分配内存空间

malloc 函数:

typename* p = (typename*) malloc( sizeof( struct typename));

解释:左侧的(typename*)是强制转换;malloc函数申请了一块大小为sizeof(node)的空间,并且返回了这块空间的指针(此时该指针是一个未确定的指针void*)

new 运算符:
new是 C++中用来申请动态空间的运算符,其返回类型同样是申请的同变量类型的指针,基本用法如下:

typename* p = new typename;

内存泄漏:
如果用malooc 或者 new 开辟出来的空间在使用后没有释放,则会导致其程序运行结束之前一直占据该内存空间。这样很有可能导致内存消耗过快以至于最后无内存可分配。
因此,使用完malloc之后,应该使用free函数来释放空间;使用完new之后,要使用delete来释放空间。

7.3.3 链表的基本操作

  1. 创建链表:头插法、尾插法
  2. 查找元素
  3. 插入元素
  4. 删除元素

7.3.4 静态链表

静态链表实现的原理是hash,通过建立一个结构体数组,并令数组的下标直接访问结点的地址
注意:静态链表不需要头节点。

我的微信公众号

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sd4567855/article/details/88077005