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


    方便在第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个元素和删除其它位置上的元素用到的代码不同,相对比较麻烦。

    
    
  • 相关阅读:
    java堆
    本地方法栈
    java虚拟机栈
    Java 程序计数器
    面向对象 基本概念 复习
    if __name__=='__main__'
    偏函数与模块
    可变参数与关键字参数(复习材料)
    匿名函数
    闭包
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7045303.html
Copyright © 2020-2023  润新知