单链表 | | 按位序删除&指定结点删除

Posted ikigai18

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表 | | 按位序删除&指定结点删除相关的知识,希望对你有一定的参考价值。

//按位序删除(带头结点)
bool ListDelete(LinkList &L ,int i,int &e){
    if(i<1)
    return false;
    LNode *p;   //指针p指向当前扫描结点 
    int j=0;   //当前p指向的是第几个结点 
    P=L;       //L指向头结点,头结点是第0个结点,不存放数据 
    if(p!=NULL&&j<i-1){ //循环找到第i-1个结点
      p=p->next;
      j++; 
    }
    if(P==NULL) //i值不合法
     return false;
    if(p->next==NULL) //第i-1个结点后已无其它结点 
     return false;

     LNode*q=p->next; //令q指向被删除的结点
     e=q->data;
     p->next=q->next;
     free(q); 
     return true; 
} 

 

//删除指定结点
bool DeleteNode(LNode *p){
    if(p==NULL)
      return false;
      LNode *q=p->next;  //令q指向*p的后继结点
      p->data=p->next->data;  //和后继结点交换数据域
      p->next=q->next;
      free(q);
      return true; 
}
//如果p结点是最后一个结点,则只能从表头开始依次寻找p的前驱 ,时间复杂度O(n)

 

以上是关于单链表 | | 按位序删除&指定结点删除的主要内容,如果未能解决你的问题,请参考以下文章

单链表(不带头结点)按位序插入

王道单链表

王道单链表

删除单链表指定结点出现段错误?

单链表--删除链表中的指定结点

链表小题(反转链表 求倒数第k个结点 删除链表指定结点)