线性数据结构线性表链表栈队列散列表_第1页
线性数据结构线性表链表栈队列散列表_第2页
线性数据结构线性表链表栈队列散列表_第3页
线性数据结构线性表链表栈队列散列表_第4页
线性数据结构线性表链表栈队列散列表_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、线性数据结构(线性表、链表、栈、队列、散列表)线性表基本概念线性结构是最常用、最简单的一种数据结构。线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是 有序且是有限的。在这种结构中: 存在一个唯一的被称为“第一个"的数据元素; 存在一个唯一的被称为“最后一个"的数据元素; 除第一个元素外,每个元素均有唯一一个直接前驱; 除最后一个元素外,每个元素均有唯一一个直接后继。基本操作 访问表的第k个节点,查看或改变它的字段内容 在第k个节点之前或之后插入新节点 删除第k个节点 确定一个表中的节点个数 基于节点的某个字段把表的节点 排成递增顺序 在表中查找某个字段中具有特定

2、值的一个节点 把两个或多个线性表组合成一个表 把一个线性表分成两个或更多的表 复制一个线性表顺序存储顺序存储:把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。 LOC(ai+1)=LOC(ai)+ Length LOC(ai)=LOC(a1)+(i-1)*Length链表排序点击标题链式存储链式存储:用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表例:线性表 L=(bat , cat, eat, fat , hat)其带头结点的单链表的逻辑状态和物理存储方式如图所示。基本数据结构依据上述内容,可以依据此来建立链表。C版

3、本cpp view plain copy print?1. struct ListNode 2. int val;3. ListNode *next;4. ListNode(int x) : val(x), next(NULL) 5. ;这里用到了结构体类型。其中, *next是指针域,用来向该结点的下一个结点;Data是个整形变量,用来存放结点中的数据。当然, Data可以是任何数据类型,包括结构体类型或类类型。C+版本cpp view plain copyprint?1. public class ListNode 2. int val;3. ListNode next;4. ListNo

4、de(int x) 5. val = x;6. next = null;7. 8. Java版本java view plain copyprint?1. class ListNode 2. int val;3. ListNode next;4. ListNode(int x) 5. val = x;6.next =null7. )8. )需要注意事项1 .链表结构2 .写程序是都需要先判断链表为空的情况3 .通过使用多个指针操纵链表一些题目 两链表求交点 链表求环 两个有序链表合并 链表求倒数第n个(中间)元素 求链表长度 链表逆序 链表节点的插入/删除链表变形循环链表循环链表是一种链式存储结

5、构,它的最后一个节点指向头结点,形成一个环。因此,从循环链表中的任何一个街角出发都能找到任何其他节点。循环链表的操作和单链表的操作基本一致,差别仅仅在于算法中的循环条件有所不同。双向链表双向链表也叫做双链表, 是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个节点开始,都可以很方便地访问它的 前驱节点和后继结点。一般,我们都构造双向循环链表。c语言线性表的双向链表存储结构cpp view plain copy print?1. typedef struct DuLNode2. ElemType data;3. struct DuLNode *

6、prior, *next;4. DuLNode, *DuLinkList;带头节点的双向循环链表的基本操作题目算法数据结构注思事Leetcode- LRU Cache & SolutionN/A链表Leetcode- Reorder List & SolutionN/A快慢指Leetcode- Linked List Cycle & SolutionN/AX快慢指Leetcode- Linked List Cycle II & SolutionN/AX快慢指Leetcode- Reverse Linked List II & SolutionN/ALee

7、tcode- Partition List & SolutionN/ALeetcode- Remove Duplicates from Sorted List& SolutionN/ALeetcode- Remove Duplicates from Sorted List II& SolutionN/ALeetcode- Merge Two Sorted Lists& SolutionN/ALeetcode- Rotate List & SolutionN/A快慢指Leetcode- Reverse Nodes in k-Group& Solut

8、ionN/AWELeetcode- Swap Nodes in Pairs & SolutionN/ALeetcode- Remove Nth Node From End of List& SolutionN/A快慢指,跳跃表跳跃列表(也称跳表)是一种随机化 数据结构,基于并联的 链表,其效率可比拟于二叉查找树(对于大多数操作需要 O(log n)平均时间)。基本上,跳跃列表是对有序的 链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳过部分列表,因此得名。所有操作都以对数随机化的时间进行。背景跳表是一种随机化的数据结构,目前开源软件Redis和LevelDB 都有用到它,它的效率和红黑树以及 AVL树不相上下,但跳表的原理相当简单,只要你能熟练操作链表,就能轻松实现一个 SkipList 。栈一些练习题题目算法数据结构注意事项Leetcode-Evaluate Reverse Polish NotationN/A堆栈Leetcode-Largest Rectangle in HistogramN/A堆栈记录重要位直Leetcode-Minimum Window SubstringN/A堆栈Leetcode-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论