zoukankan      html  css  js  c++  java
  • 考研面试问: 链表设置头结点的作用是什么?

    方便在第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从外部调用类的私有方法
    find
    sigprocmask
    alerm和pause
    kill和raise
    信号处理中可重入函数调用
    低速系统调用的信号中断
    signal函数
  • 原文地址:https://www.cnblogs.com/cs-lcy/p/7045303.html
Copyright © 2011-2022 走看看