小猪噜噜噜 2023-03-10 13:40 采纳率: 25%
浏览 20

数据结构链串——字串的替换,不懂的地方

数据结构链串——字串的替换,不懂的地方


 LinkStrNode *RepStr(LinkStrNode *s,int i,int j,LinkStrNode *t)    //串替换
{
    int k;
    LinkStrNode *str,*p=s->next,*p1=t->next,*q,*r;
    str=(LinkStrNode *)malloc(sizeof(LinkStrNode));
    str->next=NULL;
    r=str;                            
    if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s))
        return str;                     
    for (k=0;k<i-1;k++)              
    {    q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
        q->data=p->data;q->next=NULL;    //为什么这里q->next=NULL?
        r->next=q;r=q;
        p=p->next;
    }
    for (k=0;k<j;k++)                
        p=p->next;
    while (p1!=NULL)                
    {    q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
        q->data=p1->data;q->next=NULL;   //为什么这里q->next=NULL?
        r->next=q;r=q;
        p1=p1->next;
    }
    while (p!=NULL)                    
    {    q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
        q->data=p->data;q->next=NULL;   //为什么这里q->next=NULL?
        r->next=q;r=q;
        p=p->next;
    }
    r->next=NULL;
    return str;
}

我的问题就是为什么字串的替换q->next=NULL?我觉得这句省略了也是可以的啊,而且字串的插入、求子串都没有这句,所以每次都把s链串不用删除的结点放入str链串中,每次为什么q的next又要置NULL?想不通这点,希望大家能指点指点。

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-03-10 13:49
    关注

    如果q是尾节点,你就必须将其next设置为NULL

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日

悬赏问题

  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作
  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId