数据结构与算法 笔记

本文是关于数据结构的学习笔记,介绍了数据结构的定义、起源,以及数据元素、数据对象等基本概念。接着,详细讲解了逻辑结构和物理结构,如集合、线性结构、树形结构和图形结构。接着,探讨了常见的数据结构,如栈、队列、数组、链表、树和图,并介绍了这些结构的操作,如检索、插入、删除、更新和排序。最后,提到了特定的算法——KMP算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 前言:因为先学习了C语言,所以一直以为数据结构就是C语言的一部分,后边才发现,数据结构的一小部分才是被C语言所用;所以我又重新学了数据结构,特写这篇笔记以防忘掉。
  • 起源:起源于《计算机程序设计与艺术》中的《基本算法》;在计算机兴起后,软件、硬件在不断的发展,程序朝着如何简单如何简便的发展趋势去,但是一开始的时候,人们是先用算法写程序,等到发现数据越来越大、越来越多的时候,人们就想着能不能把数据归下类什么的,把数据处理给简化了,后边慢慢的就有了数据结构。

一.简介

  • 早期被理解为数值计算根据
  • 现在的定义是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
  1. 数据

  • 定义:描述客观事物的的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合
  • 包过int char 等,还包括视频、声音、图像、字符等非数值数据
  • 基本概念:

                                           

  1. 数据元素(组成数据的,有一定意义的基本单位,在计算机中常作为整体处理)
  2. 数据项(若干个数据项组成一个数据元素)

                         

     3. 数据对象(定义:性质相同的数据元素的集合,数据的子集)

                 

    4. 数据结构=数据元素+数据关系

2.逻辑结构和物理结构

  • 逻辑结构:集合结构、线性结构、树形结构、图形结构

  • 物理结构(存储结构):顺序存储、链式存储

                 

二.常见的数据结构

  • 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
  • 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
  • 数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
  • 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
  • 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
  • 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
  • 堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。

三.常用操作

  • 检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。
  • 插入:往数据结构中增加新的节点。
  • 删除:把指定的结点从数据结构中去掉。
  • 更新:改变指定节点的一个或多个字段的值。
  • 排序:把节点按某种指定的顺序重新排列。例如递增或递减。

四.链表

五.队列和栈

六.树

七.图

八.KMP算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值