![](https://i-blog.csdnimg.cn/blog_migrate/40c4c7b0fd2c9d04a13c80eeb2c8daad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e0c0e241988ba6a0a4410f1832c96c08.png)
![](https://i-blog.csdnimg.cn/blog_migrate/61a492f2de5eece557830cc2ac9625d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bb2efa4a73ca5e475d6943e0cb59881.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2d85b13511c301e350b8b4a478fc097.png)
最好情况是m次就匹配上,时间复杂度为O(m)
![](https://i-blog.csdnimg.cn/blog_migrate/72b356a9a55302a6043a56ab583d46c8.png)
前面的代码和BF算法一样,后面的i不用回溯,j回溯到next【j】上
![](https://i-blog.csdnimg.cn/blog_migrate/7c60d501eb25340d2308824298d1b448.png)
next[j]的具体算法,取第7个元素为例,先看6号元素为b,与第一个元素不相等,再看5号元素和6号元素的组合ab和1,2号元素相同,根据公式可以得next[j]为3,主要就是看所求元素的前面部分(不包括自身)和串的开头是否相同,先是一个对比,再两个对比,以此类推,最后再加上1.了解即可
![](https://i-blog.csdnimg.cn/blog_migrate/b77c6b6867f18c2cb65c66babc241cad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9afb91ab0f2c1fea7e4d04d53d78e1c5.jpeg)
后面对next[j]还有优化
![](https://i-blog.csdnimg.cn/blog_migrate/3af304df093ebf74405140fff79327fd.jpeg)
对应的就是j回溯到nextval的位置
![](https://i-blog.csdnimg.cn/blog_migrate/6f2a8315d1531f50d67412f92df93cac.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/6cfc5b4cfb7e04ac989cbd349a27a46b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/43d9ef77b5e2d37d0380de904cd4bc87.jpeg)
数据类型的定义还可以根据定义过的一维数组来定义二维数组
![](https://i-blog.csdnimg.cn/blog_migrate/9caae27946325e00c773e6d77cc3adfb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/24ce9a0155e92e63e742ff459396476f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/21373a97fe638dfc5979910853da7e6e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/85d26cba9299d2b92efcfbee2eadcb73.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/bc152d65460dd87b3142d76e9d0b54e4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f4fcd513296ad122700cc6c9e2821aa0.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/67591c5d1d0b90f04ee58b46d4732961.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/77ba31d39ee09323f8a61d4df88b7dee.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f8e449f30d5f580cb584b8213e1e7ae0.png)
6行4列有6个非零元素
![](https://i-blog.csdnimg.cn/blog_migrate/491faf83d87d597c57ee8446d631ed7d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/02896397ac30d0a76f9da3b990479cc0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b111a477b1f523b5f0e91fe5988649d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3ed62e99cd721a2038a52697646a5b1.png)
十字链表在存储自身的同时还存储相邻元素的地址,还设置了左头指针和上头指针
![](https://i-blog.csdnimg.cn/blog_migrate/d7fde1e622fa17a96a2813aef6ff7a77.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37eb2af77bbcd8b80295c251b941c289.png)
表尾只能为子表
![](https://i-blog.csdnimg.cn/blog_migrate/53904dfee4b8f5214943742b10cddf89.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd942b1814ff7b50decc3cf3ba8c181f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/88a727b87037a4b9fe8e03f4406f799e.png)
最下面左边的c不用加括号
![](https://i-blog.csdnimg.cn/blog_migrate/bc23093460b9bd364dc7e90c53da798b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1afd5db374c29e0195aa2a2c756ab986.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cd80afbd1e12841dcaf51e79f9e4c674.png)