I just want you to check this part of my code and tell me w

// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly

// linked lists. when i test it I keep getting SEGMENTATION FAULT error so most likely it is a memory leak.

//correct me if i\'m using linked lists or nodes wrong. this is part of a bigger code but i just need any erros corrected its in c++.

#include <iostream>
#include \"list.h\"
using namespace std;

//YOU: Write these five functions
//Make sure you handle empty Lists cleanly!

//Destructor. Free all memory in the list
List::~List() {
while(head_ptr)
{
Node* temp = head_ptr -> get_next();
delete head_ptr;
head_ptr = temp;
}
}

//Deletes the oldest Node inserted, and returns its data value
//The oldest Node inserted should be tail_ptr
int List::pop() {
if(list_size == 0)
{
return 0;
}
if(list_size == 1)
{
int ret_val = head_ptr -> get_data();
delete head_ptr;
head_ptr = NULL;
tail_ptr = NULL;
list_size = 0;
return ret_val;
}
else
{
int ret_val = tail_ptr -> get_data();
Node* temp = head_ptr;
while(temp -> get_next() != tail_ptr)
{
temp = temp -> get_next();
}
delete tail_ptr;
tail_ptr = temp;
delete temp;
tail_ptr -> set_next(NULL);
list_size--;
return ret_val;
}
}
//Adds a new Node to the end of the list
//The newest Node will be held in head_ptr
void List::push(int new_data) {
if(list_size == 0)head_ptr = tail_ptr;
Node* new_ptr = new Node(new_data,head_ptr);
new_ptr = head_ptr;
head_ptr -> set_next(new_ptr);
list_size++;
}

//Returns if a Node containing the passed-in integer is in the list
//True if such a Node exists, false otherwise
bool List::search(int test_data) {
if(list_size == 0)
{
return false;
}
Node* temp = head_ptr;
while(temp)
{
if(temp -> get_data() == test_data)
{
delete temp;
return 0;
}
temp = temp -> get_next();
}
return false;
}

//Removes the newest node containing the passed in integer
//Only remove one Node. Not all of them.
//Return true if any elements removed, false otherwise
bool List::remove (int old_data) {
if(list_size == 0)
{
return false;
}
if(list_size == 1)
{
delete head_ptr;
delete tail_ptr;
head_ptr = NULL;
tail_ptr = NULL;
list_size = 0;
return true;
}
if(head_ptr -> get_next() != NULL)
{
Node* tempNode = head_ptr;
delete head_ptr;
head_ptr = tempNode -> get_next();
list_size--;
return true;
}

return false;
}

Solution

#include<iostream>

#include<cstdio>

#include<cstdlib>

using namespace std;

struct node

{

    int info;

    struct node *next;

}*start;


class single_llist

{

    public:

        node* create_node(int);

        void insert_begin();

        void insert_pos();

        void insert_last();

        void delete_pos();

        void sort();

        void search();

        void update();

        void reverse();

        void display();

        single_llist()

        {

            start = NULL;

        }

};


main()

{

    int choice, nodes, element, position, i;

    single_llist sl;

    start = NULL;

    while (1)

    {

        cout<<endl<<\"---------------------------------\"<<endl;

        cout<<endl<<\"Operations on singly linked list\"<<endl;

        cout<<endl<<\"---------------------------------\"<<endl;

        cout<<\"1.Insert Node at beginning\"<<endl;

        cout<<\"2.Insert node at last\"<<endl;

        cout<<\"3.Insert node at position\"<<endl;

        cout<<\"4.Sort Link List\"<<endl;

        cout<<\"5.Delete a Particular Node\"<<endl;

        cout<<\"6.Update Node Value\"<<endl;

        cout<<\"7.Search Element\"<<endl;

        cout<<\"8.Display Linked List\"<<endl;

        cout<<\"9.Reverse Linked List \"<<endl;

        cout<<\"10.Exit \"<<endl;

        cout<<\"Enter your choice : \";

        cin>>choice;

        switch(choice)

        {

        case 1:

            cout<<\"Inserting Node at Beginning: \"<<endl;

            sl.insert_begin();

            cout<<endl;

            break;

        case 2:

            cout<<\"Inserting Node at Last: \"<<endl;

            sl.insert_last();

            cout<<endl;

            break;

        case 3:

            cout<<\"Inserting Node at a given position:\"<<endl;

            sl.insert_pos();

            cout<<endl;

            break;

        case 4:

            cout<<\"Sort Link List: \"<<endl;

            sl.sort();

            cout<<endl;

            break;

        case 5:

            cout<<\"Delete a particular node: \"<<endl;

            sl.delete_pos();

            break;

        case 6:

            cout<<\"Update Node Value:\"<<endl;

            sl.update();

            cout<<endl;

            break;

        case 7:

            cout<<\"Search element in Link List: \"<<endl;

            sl.search();

            cout<<endl;

            break;

        case 8:

            cout<<\"Display elements of link list\"<<endl;

            sl.display();

            cout<<endl;

            break;

        case 9:

            cout<<\"Reverse elements of Link List\"<<endl;

            sl.reverse();

            cout<<endl;

            break;

        case 10:

            cout<<\"Exiting...\"<<endl;

            exit(1);

            break;

        default:

            cout<<\"Wrong choice\"<<endl;

        }

    }

}


node *single_llist::create_node(int value)

{

    struct node *temp, *s;

    temp = new(struct node);

    if (temp == NULL)

    {

        cout<<\"Memory not allocated \"<<endl;

        return 0;

    }

    else

    {

        temp->info = value;

        temp->next = NULL;   

        return temp;

    }

}

void single_llist::insert_begin()

{

    int value;

    cout<<\"Enter the value to be inserted: \";

    cin>>value;

    struct node *temp, *p;

    temp = create_node(value);

    if (start == NULL)

    {

        start = temp;

        start->next = NULL;        

    }

    else

    {

        p = start;

        start = temp;

        start->next = p;

    }

    cout<<\"Element Inserted at beginning\"<<endl;

}

void single_llist::insert_last()

{

    int value;

    cout<<\"Enter the value to be inserted: \";

    cin>>value;

    struct node *temp, *s;

    temp = create_node(value);

    s = start;

    while (s->next != NULL)

    {       

        s = s->next;      

    }

    temp->next = NULL;

    s->next = temp;

    cout<<\"Element Inserted at last\"<<endl;

}

void single_llist::insert_pos()

{

    int value, pos, counter = 0;

    cout<<\"Enter the value to be inserted: \";

    cin>>value;

    struct node *temp, *s, *ptr;

    temp = create_node(value);

    cout<<\"Enter the postion at which node to be inserted: \";

    cin>>pos;

    int i;

    s = start;

    while (s != NULL)

    {

        s = s->next;

        counter++;

    }

    if (pos == 1)

    {

        if (start == NULL)

        {

            start = temp;

            start->next = NULL;

        }

        else

        {

            ptr = start;

            start = temp;

            start->next = ptr;

        }

    }

    else if (pos > 1 && pos <= counter)

    {

        s = start;

        for (i = 1; i < pos; i++)

        {

            ptr = s;

            s = s->next;

        }

        ptr->next = temp;

        temp->next = s;

    }

    else

    {

        cout<<\"Positon out of range\"<<endl;

    }

}


void single_llist::sort()

{

    struct node *ptr, *s;

    int value;

    if (start == NULL)

    {

        cout<<\"The List is empty\"<<endl;

        return;

    }

    ptr = start;

    while (ptr != NULL)

    {

        for (s = ptr->next;s !=NULL;s = s->next)

        {

            if (ptr->info > s->info)

            {

                value = ptr->info;

                ptr->info = s->info;

                s->info = value;

            }

        }

        ptr = ptr->next;

    }

}


void single_llist::delete_pos()

{

    int pos, i, counter = 0;

    if (start == NULL)

    {

        cout<<\"List is empty\"<<endl;

        return;

    }

    cout<<\"Enter the position of value to be deleted: \";

    cin>>pos;

    struct node *s, *ptr;

    s = start;

    if (pos == 1)

    {

        start = s->next;

    }

    else

    {

        while (s != NULL)

        {

            s = s->next;

            counter++;

        }

        if (pos > 0 && pos <= counter)

        {

            s = start;

            for (i = 1;i < pos;i++)

            {

                ptr = s;

                s = s->next;

            }

            ptr->next = s->next;

        }

        else

        {

            cout<<\"Position out of range\"<<endl;

        }

        free(s);

        cout<<\"Element Deleted\"<<endl;

    }

}


void single_llist::update()

{

    int value, pos, i;

    if (start == NULL)

    {

        cout<<\"List is empty\"<<endl;

        return;

    }

    cout<<\"Enter the node postion to be updated: \";

    cin>>pos;

    cout<<\"Enter the new value: \";

    cin>>value;

    struct node *s, *ptr;

    s = start;

    if (pos == 1)

    {

        start->info = value;

    }

    else

    {

        for (i = 0;i < pos - 1;i++)

        {

            if (s == NULL)

            {

                cout<<\"There are less than \"<<pos<<\" elements\";

                return;

            }

            s = s->next;

        }

        s->info = value;

    }

    cout<<\"Node Updated\"<<endl;

}


void single_llist::search()

{

    int value, pos = 0;

    bool flag = false;

    if (start == NULL)

    {

        cout<<\"List is empty\"<<endl;

        return;

    }

    cout<<\"Enter the value to be searched: \";

    cin>>value;

    struct node *s;

    s = start;

    while (s != NULL)

    {

        pos++;

        if (s->info == value)

        {

            flag = true;

            cout<<\"Element \"<<value<<\" is found at position \"<<pos<<endl;

        }

        s = s->next;

    }

    if (!flag)

        cout<<\"Element \"<<value<<\" not found in the list\"<<endl;

}

void single_llist::reverse()

{

    struct node *ptr1, *ptr2, *ptr3;

    if (start == NULL)

    {

        cout<<\"List is empty\"<<endl;

        return;

    }

    if (start->next == NULL)

    {

        return;

    }

    ptr1 = start;

    ptr2 = ptr1->next;

    ptr3 = ptr2->next;

    ptr1->next = NULL;

    ptr2->next = ptr1;

    while (ptr3 != NULL)

    {

        ptr1 = ptr2;

        ptr2 = ptr3;

        ptr3 = ptr3->next;

        ptr2->next = ptr1;       

    }

    start = ptr2;

}


void single_llist::display()

{

    struct node *temp;

    if (start == NULL)

    {

        cout<<\"The List is Empty\"<<endl;

        return;

    }

    temp = start;

    cout<<\"Elements of list are: \"<<endl;

    while (temp != NULL)

    {

        cout<<temp->info<<\"->\";

        temp = temp->next;

    }

    cout<<\"NULL\"<<endl;

}

output:

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

---------------------------------

Operations on singly linked list

---------------------------------
1.Insert Node at beginning
2.Insert node at last
3.Insert node at position
4.Sort Link List
5.Delete a Particular Node
6.Update Node Value
7.Search Element
8.Display Linked List
9.Reverse Linked List
10.Exit
Enter your choice : Wrong choice

// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get
// I just want you to check this part of my code and tell me what i did wrong. I\'m in the process of learning singly // linked lists. when i test it I keep get

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site