链表数据结构的定义很简单(节选自[include/linux/list.h],以下所有代码,除非加以说明,其余均取自该文件): struct list_head { struct list_head *next, *prev; }; list_head结构包含两个指向list_head结构的指针pr ...
分类:
其他好文 时间:
2020-05-20 14:16:32
阅读次数:
47
一、线性表 由同类型数据元素构成的有序序列的线性结构 ·表中元素的个数称作线性表的长度 ·线性表没有元素时称作空表 ·起始位置称作表头,结束位数称作表尾 二、广义表 ·广义表是线性表的推广 ·对于线性表而言,n个元素都是基本的单元素,而广义表中,这些元素也可以是另一个广义表 多重链表:链表中的节点可 ...
分类:
其他好文 时间:
2020-05-14 22:18:59
阅读次数:
66
链表及顺序表都属于线性表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连 ...
分类:
其他好文 时间:
2020-05-10 20:47:34
阅读次数:
66
单链表 创建单链表的过程是一个动态生成表的过程,从“空表”的初始转态起,依次建立各元素结点,并逐个插入链表 单链表的创建分为“头插法”和“尾插法” 头插法:把新加进的元素放在表头(头结点)后的第一个位置 尾插法:新加进的元素放在表中最后一个位置 单链表的正表删除 声明结点 p,q 将第一个结点(不算 ...
分类:
其他好文 时间:
2020-05-03 00:58:10
阅读次数:
63
循环链表 单链表的局限性:如果不从头结点出发,就无法访问的全部节点。 循环链表定义:将单链表终端结点的指针由空指针改为指向头结点;使单链表形成一个环,称单循环链表,简称循环链表 注:循环链表不一定有头结点。 ...
分类:
其他好文 时间:
2020-05-03 00:42:24
阅读次数:
58
题目: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返 ...
分类:
其他好文 时间:
2020-05-01 17:07:02
阅读次数:
60
链表学习(单链表) 链表的原理 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,那么如何表示逻辑上的相邻关系呢,我们可以给每一个元素附加一个指针域,用来 指向下一个元素的存储位置。 1.每个节点由指针域跟数据域组成 2.指针域中存储的指针指向下一个元素的地址 其结构体定义 ...
分类:
其他好文 时间:
2020-05-01 12:27:46
阅读次数:
49
栈: 目录: 1、栈是什么 2、实现栈 2-1、使用数组模拟栈 2-2、使用单链表模拟栈 2-3、实现栈全部源码 3、使用栈实现简易计算器 3-1、步骤 3-2、源码 4、使用后缀表达式完成计算器实现 4-1、前缀表达式 4-2、中缀表达式 4-3、后缀表达式 4-4、实现 4-4-1、步骤 4-4 ...
分类:
其他好文 时间:
2020-04-29 14:20:44
阅读次数:
82
栈的定义 官方定义:栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作 小甲鱼的定义:所谓的栈,其实也就是一个特殊的线性表(顺序表、链表),但是它再操作上有一些特殊的要求和限制: 栈的元素必须"后进先出" 栈的操作只能再这个线性表 ...
分类:
编程语言 时间:
2020-04-23 12:19:37
阅读次数:
92
一、数组(列表)、链表、跳表 顺序表:python里的列表、c\java里的数组 数组(ArrayList) java\c++写法:基础写法:int a[100]; 每当我们申请数组的时候,计算机实际上是在内存中给我们开辟了一段连续的地址,每一个地址通过内存管理器进行访问。 直接访问时间复杂度都为O ...
分类:
编程语言 时间:
2020-04-19 12:59:42
阅读次数:
83