Professional Documents
Culture Documents
ROLL NO.-2005690
BRANCH - CSE
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
}*head;
void createList(int n);
void reverseList();
void displayList();
void createList(int n)
{
struct Node *newNode, *temp;
int data, i;
if(n <= 0)
{
printf("List size must be greater than zero.\n");
return;
}
head->data = data;
head->next = NULL;
temp = head;
for(i=2; i<=n; i++)
{
newNode = (struct Node *)malloc(sizeof(struct Node));
if(newNode == NULL)
{
printf("Unable to allocate memory.");
break;
}
else
{
printf("Enter the data of Node %d: ", i);
scanf("%d", &data);
newNode->data = data;
newNode->next = NULL;
temp->next = newNode;
temp = temp->next;
}
}
printf("SINGLY LINKED LIST CREATED SUCCESSFULLY\n");
}
}
first = head;
rest = first->next;
if (rest == NULL)
{
*headRef = first;
return;
}
recursiveReverse(rest, headRef);
rest->next = first;
first->next = NULL;
}
void reverse(struct Node** head) {
recursiveReverse(*head, head);
}
void displayList()
{
struct Node *temp;
if(head == NULL)
{
printf("List is empty.");
}
else
{
temp = head;
while(temp != NULL)
{
printf("Data = %d\n", temp->data);
temp = temp->next;
}
}
}
int main()
{
int n, choice;
printf("Enter the total number of Nodes: ");
scanf("%d", &n);
createList(n);
return 0;
}
Q2. Write the code to delete all the nodes in a doubly linked list, where the
data element of the node is greater than data element of all its previous nodes
and is less than data element of all the next nodes.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
struct Node* prev;
};
void deleteNode(struct Node** head_ref, struct Node* del)
{
if (*head_ref == NULL || del == NULL)
return;
if (*head_ref == del)
*head_ref = del->next;
if (del->next != NULL)
del->next->prev = del->prev;
if (del->prev != NULL)
del->prev->next = del->next;
free(del);
return;
}
void push(struct Node** head_ref, int new_data)
{
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->prev = NULL;
new_node->next = (*head_ref);
if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;
(*head_ref) = new_node;
}
void printList(struct Node* node)
{
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
}
void deleteGreaterNodes(struct Node** head_ref, int x)
{
struct Node* ptr = *head_ref;
struct Node* next;
while (ptr != NULL) {
next = ptr->next;
if (ptr->data > x)
deleteNode(head_ref, ptr);
ptr = next;
}
}
void deleteLesserNodes(struct Node** head_ref, int x)
{
struct Node* ptr = *head_ref;
struct Node* next;
while (ptr != NULL) {
next = ptr->next;
if (ptr->data < x)
deleteNode(head_ref, ptr);
ptr = next;
}
}
int main()
{
struct Node* head = NULL;
push(&head, 2);
push(&head, 4);
push(&head, 8);
push(&head, 10);
push(&head, 12);
push(&head, 14);
push(&head, 16);
push(&head, 18);
printf("\n Original Linked list ");
printList(head);
int x = 12;
deleteGreaterNodes(&head, x);
printf("\n Modified Linked list - Greater ");
printList(head);
struct Node* head2 = NULL;
push(&head2, 2);
push(&head2, 4);
push(&head2, 8);
push(&head2, 10);
push(&head2, 12);
push(&head2, 14);
push(&head2, 16);
push(&head2, 18);
deleteLesserNodes(&head2, x);
printf("\n Modified Linked list - Lesser ");
printList(head2);
getchar();
}
Q3. Let a matrix of size m X n contains elements either 0 or 1. Write a code to
replace an element 0 with 1, if all its surrounding elements are 1.
#include<stdio.h>
main()
{
int row, column,i,j;
printf("Enter number of rows: ");scanf("%d",&row);
printf("Enter number of columns: ");scanf("%d",&column);
int a[row][column];
printf("Enter Elements: (only 0's and 1's)\n");
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("\nORIGINAL MATRIX\n");
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=1;i<row-1;i++)
{
for(j=1;j<column-1;j++)
{
if(a[i][j]==0)
{
if(a[i][j-1]==1 && a[i][j+1]==1 && a[i-1][j]==1 && a[i+1][j]==1)
a[i][j]=1;
}
}
}
printf("\nOUTPUT MATRIX\n");
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}