Linked Lists
Linked Lists
#include<stdio.h>
#include<stdlib.h>
struct node{
int key;
};
temp->key = key;
temp->next = NULL;
return temp;
temp->next= *head;
*head = temp;
if(*head = NULL){
*head = temp;
return 0;
while(last->next != NULL){
last = last->next;
last->next = temp;
}
void insert_after(struct node* prev,int key){
if(prev == NULL){
printf("Not found.");
return;
temp->next = prev->next;
prev->next = temp;
while(temp!=NULL){
if(temp->key == key){
return temp;
temp= temp->next;
return NULL;
*head = temp->next;
free(temp);
while(temp!= NULL){
printf("%d\t",temp->key);
temp= temp->next;
int main(){
int n = sizeof(key)/sizeof(key[0]);
for(int i=0;i<n;i++){
insert_at_end(&head,key[i]);
print_list(head);
insert_at_beginning(&head,111);
insert_at_end(&head,999);
insert_after(prev,555);
delete_key(&head,87);
delete_key(&head,356);
delete_key(&head,124);
print_list(head);
#include<stdlib.h>
struct node{
int data;
};
struct node* createnode(int data){
newnode->data = data;
newnode->prev = NULL;
newnode->next = NULL;
return newnode;
if(*head == NULL){
*head = newnode;
else{
newnode->next = *head;
(*head)->prev = newnode;
*head= newnode;
if(*head == NULL){
*head = newnode;
else{
while(current->next != NULL){
current = current->next;
current->next = newnode;
newnode->prev = current;
}
}
while(current!= NULL){
if(current->data == key){
return 1;
current = current->next;
return 0;
current = current->next;
if(current == NULL){
if(current->prev != NULL){
current->prev->next = current->next;
else{
*head = current->next;
if(current->next != NULL){
current->next->prev = current->prev;
free(current);
printf("Linked list\n");
while(current!=NULL){
printf("%d\t",current->data);
current= current->next;
while(tail->next != NULL){
tail= tail->next;
while(tail!=NULL){
printf("%d\t",tail->data);
tail = tail->prev;
printf("\n");
int main(){
insert_at_end(&head,6);
insert_at_end(&head,8);
insert_at_end(&head,55);
insert_at_end(&head,22);
insert_at_beginning(&head,2);
insert_at_end(&head,5);
if(search(head,8)){
printf("Element 8 is present.\n");
else{
delete_node(&head,55);
print_list(head);
print_opp(head);
return 0;
#include<stdlib.h>
struct node{
int data;
};
newnode->data = data;
newnode->next = NULL;
return newnode;
if(*head == NULL){
*head = newnode;
newnode->next = newnode;
else{
while(last->next != *head){
last = last->next;
}
last->next = newnode;
newnode->next = *head;
*head = newnode;
if(*head == NULL){
*head = newnode;
newnode->next = newnode;
else{
while(last->next != *head){
last = last->next;
last->next = newnode;
newnode->next= *head;
if(current == NULL){
return 0;
do{
if(current->data == key)
return 1;
current = current->next;
while(current!= head);
return 0;
if(*head == NULL){
return;
while(current->data != key){
if(current->next == *head){
return;
prev = current;
current = current->next;
*head = NULL;
free(current);
return;
if(current == *head){
prev = (*head)->next;
while(prev->next != *head)
prev = prev->next;
*head = (*head)->next;
prev->next = *head;
free(current);
prev->next = *head;
free(current);
else{
prev->next = current->next;
free(current);
if(current == NULL)
return;
do{
printf("%d\t",current->data);
current= current->next;
}while(current!= head);
printf("\n");
int main(){
insert_at_end(&head,6);
insert_at_end(&head,8);
insert_at_end(&head,55);
insert_at_end(&head,22);
insert_at_beginning(&head,2);
insert_at_end(&head,5);
if(search(head,8)){
printf("Element 8 is present.\n");
}else{
delete_node(&head,55);
printf("Linked list:");
print_list(head);
return 0;