Write a c program languageof linkedlists using an pointer ba

Write a c program language,of linkedlists using an pointer based implementation which includes operations of linkedlist like:-

1.INSERT

2.DELETE

3.PRINTLIST

Take input as integers.

Note:-The program should include all the above mentioned operations.

Solution

#include<stdio.h> #include<stdlib.h> #include<stdbool.h> struct test_struct
{
int val;
struct test_struct *next;
};
struct test_struct *head = NULL;
struct test_struct *curr = NULL;
struct test_struct* create_list(int val) {
printf(\"\ creating list with headnode as [%d]\ \",val);
struct test_struct *ptr = (struct test_struct*)malloc(sizeof(struct test_struct)); if(NULL == ptr) {
printf(\"\ Node creation failed \ \"); return NULL;
}
ptr->val = val;
ptr->next = NULL;
head = curr = ptr;
return ptr;
}
struct test_struct* add_to_list(int val, bool add_to_end)
{
if(NULL == head)
{
return (create_list(val));
}
if(add_to_end)
printf(\"\ Adding node to end of list with value [%d]\ \",val);
else
printf(\"\ Adding node to beginning of list with value [%d]\ \",val);
struct test_struct *ptr = (struct test_struct*)malloc(sizeof(struct test_struct)); if(NULL == ptr) {
printf(\"\ Node creation failed \ \"); return NULL;
}
ptr->val = val;
ptr->next = NULL; if(add_to_end)
{
curr->next = ptr;
curr = ptr;
}
else
{
ptr->next = head;
head = ptr;
}
return ptr;
}
struct test_struct* search_in_list(int val, struct test_struct **prev) {
struct test_struct *ptr = head;
struct test_struct *tmp = NULL;
bool found = false; printf(\"\ Searching the list for value [%d] \ \",val); while(ptr != NULL)
{
if(ptr->val == val)
{
found = true;
break;
}
else
{
tmp = ptr;
ptr = ptr->next;
}
}
if(true == found) {
if(prev) *prev = tmp; return ptr;
}
else
{
return NULL;
}
}
int delete_from_list(int val)
{
struct test_struct *prev = NULL;
struct test_struct *del = NULL;
printf(\"\ Deleting value [%d] from list\ \",val);
del = search_in_list(val,&prev); if(del == NULL)
{
return -1;
}
else
{
if(prev != NULL) prev->next = del->next;
if(del == curr)
{
curr = prev;
}
else if(del == head) {
head = del->next;
}
}
free(del);
del = NULL;
return 0;
} v
oid print_list(void) {
struct test_struct *ptr = head;
printf(\"\ -------Printing list Start------- \ \"); while(ptr != NULL) { printf(\"\ [%d] \ \",ptr->val);
ptr = ptr->next;
}
printf(\"\ -------Printing list End------- \ \"); return; } int main(void) { int i = 0, ret = 0;
struct test_struct *ptr = NULL; print_list(); for(i = 5; i<10; i++) add_to_list(i,true); print_list();
for(i = 4; i>0; i--) add_to_list(i,false);
print_list();
for(i = 1; i<10; i += 4)
{
ptr = search_in_list(i, NULL);
if(NULL == ptr)
{
printf(\"\ Search [val = %d] failed, no such element found\ \",i);
} else
{
printf(\"\ Search passed [val = %d]\ \",ptr->val);
}
print_list();
ret = delete_from_list(i); if(ret != 0)
{
printf(\"\ delete [val = %d] failed, no such element found\ \",i);
} else
{
printf(\"\ delete [val = %d] passed \ \",i);
}
print_list();
}
return 0;
}

Write a c program language,of linkedlists using an pointer based implementation which includes operations of linkedlist like:- 1.INSERT 2.DELETE 3.PRINTLIST Tak
Write a c program language,of linkedlists using an pointer based implementation which includes operations of linkedlist like:- 1.INSERT 2.DELETE 3.PRINTLIST Tak
Write a c program language,of linkedlists using an pointer based implementation which includes operations of linkedlist like:- 1.INSERT 2.DELETE 3.PRINTLIST Tak

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site