• 考研面试问: 链表设置头结点的作用是什么?


    方便在第1个位置进行插入、删除操作时同其他位置一样。加了头结点之后,插入、删除都是在后继指针next上进行操作,不用动头指针;若不加头指针的话,在第1个位置插入或者删除第1个元素时,需要动的是头指针。例如:在进行删除操作时,L为头指针,p指针指向被删结点,q指针指向被删结点的前驱,对于非空的单链表:

    1.带头结点时

    删除第1个结点(q指向的是头结点):q->next(变量)=p->next(值是地址); free(p);
    //用到了2个指针变量-若删除p指向的后继结点p->next = p->next->next
    再free(p->next)::一般q指向删除结点q=p->next;p->next=q->next;free(q)


    删除第i个结点(i不等于1):q->next=p->next;free(p);

    *********************

    2.不带头结点时

    删除第1个结点时(q为空):L=p->next; free(p);
    删除第i个结点(i不等于1):q->next=p->next;free(p);
    结论:带头结点时,不论删除哪个位置上的结点,用到的代码都一样;不带头结点时,删除第1个元素和删除其它位置上的元素用到的代码不同,相对比较麻烦。

    
    
  • 相关阅读:
    尚筹网11阿里云OSS对象存储
    阿里云的OSS对象存储
    尚筹网10用户登录
    尚筹网09用户注册
    尚筹网08环境搭建
    实体类的进一步划分
    尚筹网07分布式架构
    临时弹出一个QQ对话窗口
    Input框改placeholder中字体的颜色
    判断银行卡号的正则
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7045303.html
Copyright © 2020-2023  润新知