建立,删除循环链表中的一个元素

来源:互联网 发布:微型六轴机器人 淘宝 编辑:程序博客网 时间:2024/06/05 04:06

声明循环链表类

class Clink{Clink *head;Clink *next;Clink *p;Clink *p2;Clink *p3;string name;public:Clink(){name="“吴香玉”";}Clink*build();voidshow(Clink *HEAD);Clink*C_delete(Clink *HEAD); };


建立循环链表
Clink* Clink::build()//建立循环链表{head=this;p=head;int i=0;while(p->name!="0"){p2=new Clink;p2->name=sentence[i++];p->next=p2;//以上几步与建立单向链表相同p3=p;//保存上一个节点p=p2;//p移向刚建立的节点 }p3->next=head;//将0之前的一个节点的next指向头节点,构成一个圈return head; } 


删除循环链表的一个元素

Clink* Clink::C_delete(Clink *HEAD){string sen;p2=HEAD;//p2定位至头节点 p=HEAD->next;//p为p2下一个节点 sen="个";while(p->name!=sen)//找到要删除的节点 {p2=p;//保存p所在节点 p=p->next;//p移动至下一个节点 }p2->next=p->next;//将要删除的节点上一个节点的next,指向要删除的节点的下一个节点if(p==HEAD)return HEAD->next;//如果要删除的是头节点,那么头节点的下一个节点就成了新的头节点 else return HEAD;//如果要删除的不是头节点那么链表的头节点就没有变化  }


输出循环链表

void Clink::show(Clink *HEAD){p=HEAD;do{cout<<p->name;p=p->next;}while(p!=HEAD);//因为是循环链表,所以当P第二次到达头节点的时候就不要输出了cout<<endl; } 

以上就是循环链表中删除一个元素,本机器觉得写的时候应该把查找那个元素与删除元素分成两个函数写,这样可能好一些



0 0