Итак, я делаю рудиментарную реализацию кругового списка. Я еще не сделал функцию удаления. Всякий раз, когда я запускаю cpp, я получаю ошибку seg 11. Любая обратная связь будет высоко оценена. Спасибо.Сегментация Fault 11 всякий раз, когда я запускаю это. Хотелось бы помочь/обратная связь
#include <iostream>
using namespace std;
struct node{
node* next=NULL;
bool tail= false;
int contents;
};
node* start;//start is a pointer that exists at the start of the list before the first element
class CircList{
node *seek;
public:
CircList(){ //creates a list of one node that points to itself
node *b= new node;
b->contents=0;
b->next = b;
start->next=b;
b->tail=true;
}
bool empty(){
if(start->next==NULL){
return true;
}
return false;
}
int size(CircList a){
if(start->next==NULL){
cout<<"size is 0 \n";
return true;
}
seek=start->next;
for(int i=0; i++;){
if(seek->tail==true){
cout<<"size is "<<i;
}
seek=seek->next;
}
return 0;
}
void insert(int pos, int val){
if(start->next ==NULL){//if inseting when the list is empty
node *b= new node;
b->next = b;
b->tail=true;
return;
}
node *b= new node;
b->contents= val;
seek=start->next;
for(int i=0;i<=pos; i++){
if(seek->tail==true){//if inserting at the end
seek->tail=false;
b->tail=true;
seek->next=b;
b->next=start->next;
}
if(pos==i){//if inserting between two nodes
b->next = seek->next;
seek->next = b;
}
seek=seek->next;
}
}
void remove(int a){
seek=start->next;
for(int i=0;i<=a-1; i++){
if(i<a){
seek=seek->next;
}
if(i==a-1){
}
}
}
void display(){
cout<<start->next->contents; //will also be completed in the near future
seek=start->next;
for(int i=0; ;i++){
if(seek->tail==false){
cout<<seek->contents<<"\n";
}
if(seek->tail==true){
cout<<seek->contents<<"\n";
return;
}
}
}
};
Это был .h файл. Ниже приводится cpp. Я просто подключил номера для тестирования. Я хочу запустить программу, чтобы проверить, как она себя ведет.
#include <iostream>
#include "CircList.h"
using namespace std;
int main(){
CircList a;
a.insert (5,5);
a.insert (5,5);
a.insert (1,4);
a.insert (20,65);
a.insert (3,7);
a.size(a);
a.display();
}
Compile со всеми предупреждениями и отладочной информации (например, 'г ++ -Wall -Wextra -std = C++ 11 -g'), возможно, даже с '-fsanitize = address', если они доступны. Затем ** используйте отладчик ** ('gdb') и, возможно, [valgrind] (http://valgrind.org/). Ваш вопрос не в тему, так как вы не понимаете его каким-либо образом. –