单,双链表遍历segment fault的问题
最近在学习链表,这个code是遍历打印和第一个节点不同的链表。
通过了编译但时不时会出现segmentation fault。弄了半天没太搞清楚是什么原因,貌似是指针超出末节点了?不知道如何修改
int displayall(node * head){
node * current = head->next;
int count=0;
cout << "\n和第一个节点不同: ";
if(!head)
return 0;
//遍历
//while(current!=NULL){
while(current->next!=NULL){
while(head->data==current->data){
//while(head->data!=current->data){
count++;
cout << current->data << " ";
current=current->next;
}
current = current->next;
}
cout << "\n还剩下 " << count << " 节点.";
return count;
}
双链表是查找所有"2"节点,并且节点之前添加新的节点。
同样,双链表也是通过了编译但时不时会出现segmentation fault
int deplicate_2(node *&head){
node*current = head;
int count=0;
while(current!=NULL){
if(current->data==2){
node*temp=new node;
//2后插入
//temp->next=current->next;
//temp->previous=current;
//current->next=temp;
//temp->next->previous=temp;
//2前插入
temp->next=current;
temp->previous=current->previous;
current->previous->next=temp;
//temp->next->previous=temp;
current->previous=temp;
count++;
current=current->next;
}else{
current=current->next;
}
}
cout << endl << count << " 个2节点重复." << endl;
return count;
}
这个双链表是每隔一个节点删除。这个的segmentation fault找到了,只要末节点被删除就会segment fault。不知道改如何修改
int remove_every_other(node *&head){
node*current = head;
int count=0;
while(current->!=NULL){
noded * temp = current->next;
current->next = temp->next;
temp->next->previous = current;
cout << temp->data << " 被删除了!\n";
delete temp;
count++;
current=current->next;
}
cout << endl << count << " 个节点被删除了.\n";
return count;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个程序:
第二个程序
第三个程序