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