通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

数据结构里面pnext与next有什么区别

p 是一个指向某类型结构的指针;p->next 是 p 所指向的结构的 next 成员;p = p->next 是把p->next 的值赋给 p。如果这两句语句中的 p 变量是同一个 p 的话,那么p->next 的数据类型一定是一个指向结构的指针。

一、数据结构里面pnext与next的区别

p 是一个指向某类型结构的指针;

p->next 是 p 所指向的结构的 next 成员;

p = p->next 是把 p->next 的值赋给 p。

如果这两句语句中的 p 变量是同一个 p 的话,那么 p->next 的数据类型一定是一个指向结构的指针,而且所指向的结构的类型与 p->next 所在结构的类型相同。

#include<stdio.h>   //链表的结构及其指针 struct stru_num {     int num;     struct stru_num *next;//结构本身不能含有同类型的结构,但可以含有指向同类型的指针 } *p;   int main(void) {    struct stru_num list[10];//链表     int index;           p = list;//初始化指针     for(index = 0;index < 10;index++) //赋值     {         p->next = p + 1;         p->num = index;         p = p->next;//与 p++ 效果等同     }     (p – 1)->next = NULL;//末元素指向空指针,           //输入除首元素的其他元素     p = list;     for(index = 0;index < 9;index++)         printf(“%d”,(p[index].next)->num);           return 0; }

延伸阅读:

二、KMP算法

相比BF算法的改进:每当一趟匹配过程中出现字符比较不等时,无需回溯i指针(即无需将i指针完全退回至i-j+1),而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较。

需要解决的问题:当主串中的第i个字符与模式中第j个字符比较不相等时,主串中第i个字符(i指针不回溯)应与模式中哪个字符再比较?—-假设从主串中第i个字符与模式中的第k个字符再进行比较

它是则呢样来消除回溯的呢?就是因为它提取并运用了加速匹配的信息!

  这种信息就是对于每模式串 t 的每个元素 t j,都存在一个实数 k ,使得模式串 t 开头的 k 个字符(t 0 t 1…t k-1)依次与 t j 前面的 k(t j-k t j-k+1…t j-1,这里名列前茅个字符 t j-k 非常多从 t 1 开始,所以 k < j)个字符相同。如果这样的 k 有多个,则取最大的一个。模式串 t 中每个位置 j 的字符都有这种信息,采用 next 数组表示,即 next[ j ]=MAX{ k }。

相关文章