- 博客(12)
- 收藏
- 关注
原创 数据结构与算法学习笔记——KMP算法
数据结构与算法学习笔记(C语言)定义:子串的定位操作通常叫串的模式匹配,Index(S, T, pos),其中T称为模式串,模式匹配操作是各种串处理操作过程中最重要的操作之一比如在人体的DNA序列中查找是否存在某病毒序列以判断这个人是不是感染的病毒,就要用的模式匹配操作。之前我们已经写了下面这个模式匹配算法,它调用了求子串的函数以及串比较函数。int Index(String S, String T, int pos){ int m, n, i; String Sub; if (po
2021-09-04 19:22:31
360
原创 数据结构与算法学习笔记——串的另两种存储形式
数据结构与算法学习笔记(C语言)上一篇文章学习了串的定长数组,这一章学习串的另外两种存储结构。堆分配存储表示(动态数组表示)和串的块链存储表示。堆分配:在程序执行过程中,用malloc()函数在堆区申请所需大小的连续空间。C语言描述如下typedef struct { char *ch; /*按照串长分配存储区*/ int length; /*串长*/}String;这种存储结构需要我们手动申请和释放空间。所以销毁串的操作需要实现1.销毁串void DestroyString(Stri
2021-09-02 20:32:19
436
原创 数据结构与算法学习笔记——串
1.定义:串是由零个或多个字符组成的有限序列,一般记为 s = 'a1a2a3......an' (n >= 0)其中,s是串的名,用单引号括起来的字符序列是串的值;ai (1 ≤ i ≤ n)可以是字母、数字或其他字符;串中字符的数目 n 称为串的长度。零个字符的串称为空串(null string),它的长度为零。注意:’ ’ 这个里面有一个空格,这个叫空格串,它可不是空串。生活中应用串的实例很多,比如各种账号密码,就是一个串,编辑的一段文本也是串这里纠正一下可能会犯的一个小错
2021-09-02 01:31:42
525
原创 数据结构与算法学习笔记——队列
数据结构与算法学习笔记(C语言)1.定义:队列是一种先进先出(FIFO)的线性表,它只允许从一端插入,而在另一端删除删除元素。这和我们日常生活中的排队是一样的,排在第一个的人先办事,后来的人排在队尾。在队列中,允许插入的一段叫队尾(rear),允许删除的一端叫队头(front)。插入元素到队尾叫入队,删除队头的元素叫出队。队列的抽象数据类型定义:ADT Queue { 数据对象:D = {a1, a2, a3...} 数据关系:R = {<a1, a2>,<a2, a3
2021-08-31 00:54:03
411
原创 数据结构与算法学习笔记——链栈
数据结构与算法学习笔记(C语言)链栈在开始链栈的学习之前,我们先实现一下上一篇文章中提到的检查括号匹配的小程序,鉴于水平有限,本人就随便写一下代码好了,目标仅限于对功能的实现。/*用顺序栈这种数据结构,实现一个检查括号匹配的小程序*//*头文件*/#include <stdio.h>#include <stdlib.h>#include <stdbool.h>/*定义类型*/typedef char SElemType;typedef int Sta
2021-08-30 16:29:18
214
原创 数据结构与算法学习笔记——栈
数据结构与算法学习笔记(C语言)栈1.定义:栈是仅限在表尾进行插入和删除操作的线性表其实,根据定义,我们已经就能自己按照之前实现线性表的代码来实现栈了,栈是一种特殊的线性表,不过是对插入和删除操作加了位置限制罢了既然我们都能完成线性表的各种操作了,有些人可能就会问了,还要栈来干什么呢?继续往下学,就能得到这个问题的答案了!而且我们由定义知道,栈会比线性表学起来更加简单,事实也是如此栈的特征:后进先出(LIFO:last in first out),最后进去的最先出来。现实生活中,有很多事物
2021-08-28 22:56:15
494
原创 数据结构与算法学习笔记——多项式的链表实战
数据结构与算法学习笔记(C语言)多项式的链表实现定义:在数学上,形如的式子叫做一元多项式,包括系数a、b、c、d…还有幂次0、1、2、3…根据多项式的特征,我们可以定义一个链表,让节点的数据域放系数和幂次,然后让next指针域指向下一个更高幂次的节点抽象数据类型多项式Polynomial的实现typedef struct term { int coef; /*系数*/ int expn; /*幂次*/ struct term *next; /*next指针*/}term, *Polyn
2021-08-28 04:18:06
1317
原创 数据结构与算法学习笔记——循环链表和双向链表
数据结构与算法学习笔记(C语言)循环链表1.定义:循环链表是另一种形式的链式存储结构。它的特征是表中最后一个节点的指针域指向头节点,整个链表形成一个环。如果循环链表是个空表,那头节点的next指针直接指向自己一条蛇咬住自己的尾巴,那么一只蚂蚁从????身体的任何一个位置开始爬,都能爬边蛇的全身,同样,从循环链表中任何一个节点出发都能找到表中的其他节点。如果我们要访问尾节点,需要从头指针开始,一个节点一个节点到走,然后走到尾节点,时间复杂度尾O(n);如果我们要合并A、B两个线性表,需要进行的
2021-08-27 14:23:38
577
原创 数据结构与算法学习笔记——静态链表
数据结构与算法学习笔记(C语言)静态链表前言:我们已经学习用C语言的结构体指针实现单链表,但是在一些语言中,比如早期的Basic、Fortran语言中是没有指针的,但是它们依然能用其他方法实现单链表没有指针的计算机语言用数组来实现单链表,数组中的每个元素由两个数据域组成,data和cur。数据域data,用来存放数据元素,cur用来存放该元素的后继在数组中的下表。所以这种方法也叫游标实现法。想象一下某人在洞窟里寻宝,脚下铺好了一片片青石板,一直延伸到宝藏的密室那里,但是贸然走过去就会中机关而粉身
2021-08-26 20:23:47
503
原创 数据结构与算法学习笔记——线性表下
数据结构与算法学习笔记(C语言)3.线性表的链式存储结构前言:前面线性表的顺序存储结构有着明显的不足,在执行插入和删除操作时需要移动大量的元素设想一个记录着我国大陆14亿5万多人个人信息的顺序表,现在要在第一个位置插入一条记录,那么需要移动14亿多条记录,需要耗费很长的时间线性表的链式存储结构将弥补顺序存储结构的这一不足,下面将加以介绍1.定义:n个节点链接成一个链表,即为线性表的链式存储结构节点由两部分组成数据域:存储数据元素的信息指针域:存储直接后继的位置由于此链表的每个节点只
2021-08-26 01:35:38
175
原创 数据结构与算法学习笔记——基本概念篇
数据结构与算法学习笔记(C语言)1.基本概念1.数据:数据是描述客观事物的符号,是能够输入计算机并且被计算机所处理的对象比如数字、字母、汉字、图像、音频等等,所有的数据在计算机中都用二进制表示,0101010101…能够用来表示世间万物2.数据元素:数据元素是组成数据的、有一定意义的基本单位,在计算机中通常被作为整体处理,也被称为记录比如一个个人、一部部手机等等,作为一个整体处理3.数据项:一个元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。一个“数据元素”人——可以由头
2021-08-24 18:54:34
217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人