Ds File
Ds File
#include <stdlib.h>
struct node {
int info;
};
temp ->info=data;
if(start == NULL){
start = temp;
else{
ptr = start;
while(ptr ->link!=NULL){
};
void insert_pos() {
int ele,pos,i;
scanf("%d",&ele);
pip->info=ele;
p=start;
for(i=1;i<pos-1;i++){
p=p->link;
pip->link=p->link;
p->link=pip;
void insert_end() {
int data;
scanf(" %d",&data);
temp->info=data;
p=start;
while(p->link!=NULL){
p=p->link;
p->link=temp;
temp->link=NULL;
void insert_beg() {
int data;
scanf("%d",&data);
temp->info=data;
temp->link=start;
start=temp;
}
void del_beg(){
start= start->link;
void del_end(){
pde = start;
while(pde->link->link!=NULL){
pde=pde->link;
pde->link=NULL;
void del_pos(){
int pos,i;
scanf("%d",&pos);
pdp=start;
for(i=1;i<pos-1;i++){
pdp=pdp->link;
pdp->link = pdp->link->link;
void length(){
int count=0;
pl= start;
while(pl!=NULL){
count++;
pl=pl->link;
printf("Length = %d\n",count);
}
void search(){
int ele;
int count=1;
scanf("%d",&ele);
ps= start;
while(ps!=NULL){
if(ps->info==ele){
break;
ps=ps->link;
count++;
if(ps==NULL){
printf("Not found");
void reverse(){
while(current!=NULL){
next =current->link;
current->link=prev;
prev=current;
current=next;
start =prev;
}
void traverse(){
struct node * p;
p=start;
while(p != NULL ){
printf("%d\t",p->info);
p=p->link;
int main(){
int n,i,data;
scanf("%d",&n);
for( i=0;i<n;i++){
scanf("%d",&data);
add(data);
int x;
scanf("%d",&x);
switch(x){
case 1: insert_end();
break;
case 2: insert_beg();
break;
case 3: insert_pos();
break;
case 4: del_beg();
break;
case 5: del_end();
break;
case 6: del_pos();
break;
case 7: length();
break;
case 8: search();
break;
case 9: reverse();
break;
traverse();
Output:
PRACTICAL-2
Doubly Linked List:
#include <stdio.h>
#include <stdlib.h>
struct node{
int info;
struct node *next;
};
temp ->info=data;
if(start == NULL){
start = temp;
end = temp;
else{
ptr = start;
end = temp;
void insert_beg() {
int data;
scanf("%d",&data);
temp->info=data;
temp->next=start;
temp->prev=NULL;
start->prev=temp;
start=temp;
void insert_end(){
int data;
scanf("%d",&data);
pie->info=data;
p=start;
while(p->next!=NULL){
p=p->next;
p->next=pie;
pie->next=NULL;
pie->prev=p;
end=pie;
void insert_end1(){
int data;
scanf("%d",&data);
pie->prev=end->next;
pie=end;
void insert_pos(){
int eip,i,pos;
scanf("%d",&pos);
pip->info=eip;
p=start;
for(i=1;i<pos-1;i++){
p=p->next;
pip->next=p->next;
pip->prev=p->next->prev;
p->next->prev=pip;
p->next=pip;
void del_beg(){
start->next->prev=NULL;
start=start->next;
void del_end(){
pde=start;
while(pde->next->next!=NULL){
pde=pde->next;
pde->next=NULL;
end=pde;
void del_end1(){
// pde=end;
// pde->link=NULL;
end->prev->next=NULL;
end=end->prev;
void del_pos(){
int pos,i;
scanf("%d",&pos);
pdp=start;
for(i=1;i<pos-1;i++){
pdp=pdp->next;
pdp->next=pdp->next->next;
pdp->next->prev=pdp;
void length(){
int count=0;
pl=start;
while(pl!=NULL){
count++;
pl=pl->next;
printf("Length = %d\n",count);
void search(){
int element,p=1;
printf("Enter element:");
scanf("%d",&element);
struct node*ps;
ps=start;
while(ps!=NULL){
if(ps->info==element){
printf("Found at %d\n",p);
break;
ps=ps->next;
p++;
if(ps==NULL){
printf("Not Found");
void reverse(){
struct node*prev=NULL;
struct node*curr=start;
struct node*next;
printf("Reversed list:\n");
while(curr!=NULL){
next=curr->next;
curr->next=prev;
prev=curr;
curr=next;
start=prev;
void trav_start(){
p=start;
while(p!=NULL){
printf("%d\t",p->info);
p=p->next;
void trav_end(){
struct node *e;
e=end;
while(e!=NULL){
printf("%d\t",e->info);
e=e->prev;
void main(){
int n,i,data,a;
scanf("%d",&n);
for( i=0;i<n;i++){
scanf("%d",&data);
add(data);
// p = start;
// while(p != NULL){
// printf("\t\n%d\n",p->info);
// p=p->next;
// }
int x;
scanf("%d",&x);
switch(x){
case 1: insert_end();
break;
case 2: insert_beg();
break;
case 3: insert_pos();
break;
case 4: del_beg();
break;
case 5: del_end();
break;
case 6: del_pos();
break;
case 7: del_end1();
break;
case 8: search();
break;
case 9: reverse();
break;
break;
trav_start();
// trav_end(); }
Output:
PRACTICAL-3
Circular Linked List:
#include <stdio.h>
#include <stdlib.h>
struct node {
int info;
};
temp->info = data;
if (last == NULL) {
temp->link = temp;
last = temp;
} else {
temp->link = last->link;
last->link = temp;
last = temp;
void insert_beg() {
int eib;
scanf("%d", &eib);
pib->info = eib;
pib->link = last->link;
last->link = pib;
void insert_end() {
int eib;
scanf("%d", &eib);
pib->info = eib;
pib->link = last->link;
last->link = pib;
last = pib;
void insert_pos() {
scanf("%d", &pos);
pib->info = eib;
p = last->link;
p = p->link;
pib->link = p->link;
p->link = pib;
void del_beg() {
last->link = last->link->link;
void del_end() {
p = last->link;
p = p->link;
p->link = last->link;
last = p;
void del_pos() {
int pos, i;
scanf("%d", &pos);
p = last->link;
p = p->link;
}
p->link = p->link->link;
int length() {
if (last == NULL) {
return 0;
int len = 0;
do {
len++;
temp = temp->link;
return len;
void search() {
if (last == NULL) {
printf("List is empty\n");
return;
scanf("%d", &data);
do {
if (temp->info == data) {
found = 1;
break;
temp = temp->link;
pos++;
} while (temp != last->link);
if (!found) {
void trav_start(){
p=last->link;
while(1){
printf("%d\t",p->info);
p=p->link;
if(p==last->link)
break;
int main() {
scanf("%d", &n);
scanf("%d", &data);
add(data);
printf("\nEnter an operation:\n");
printf("7. Length\n");
printf("8. Search\n");
scanf("%d", &choice);
switch (choice) {
case 1:
insert_end();
break;
case 2:
insert_beg();
break;
case 3:
insert_pos();
break;
case 4:
del_beg();
break;
case 5:
del_end();
break;
case 6:
del_pos();
break;
case 7:
break;
case 8:
search();
break;
trav_start();
return 0;
Output:
PRACTICAL-4
Stack using Array:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10
int a[maxsize];
void push(){
int n;
if(top == maxsize){
printf("Stack is full");
else{
scanf("%d",&n);
top = top+1;
a[top] = n;
void pop(){
if(top == -1){
printf("Stack is empty");
}
else{
printf("%d",a[top]);
top = top-1;
void peek(){
if(top == -1){
printf("Stack is empty");
else{
printf("%d",a[top]);
void traverse(){
int i;
if (top==-1){
else{
for(i=top;i>=0;i--){
printf("%d",a[i]);
int main() {
int i,choice;
while(1){
printf("\nEnter an operation\n1.push\n2.pop\n3.peek\n4.traverse\n");
scanf("%d",&choice);
switch(choice){
case 1:
push();
break;
case 2:
pop();
break;
case 3:
peek();
break;
case 4:
traverse();
break;
return 0;
Output:
Push- Peek-
Pop-
Traverse-
PRACTICAL-5
Stack using Linked List:
#include <stdio.h>
#include <stdlib.h>
struct node{
int info;
};
void push(){
struct node*temp;
int data;
scanf("%d",&data);
temp->info=data;
if(top==NULL){
temp->link=NULL;
top=temp;
else{
temp->link=top;
top=temp;
void pop(){
if(top == NULL){
printf("Stack is empty");
else{
printf("%d",top->info);
top = top->link;;
void peek(){
if(top==NULL){
printf("stack is empty");
else{
printf("%d",top->info);
void traverse(){
struct node*p;
if(top==NULL){
printf("stack is empty");
else{
p=top;
while(p!=NULL){
printf("%d\t",p->info);
p=p->link;
int main() {
int i,choice;
while(1){
printf("\n");
scanf("%d",&choice);
switch(choice){
case 1:
push();
break;
case 2:
pop();
break;
case 3:
peek();
break;
case 4:
traverse();
break;
default:
exit(0);
return 0;}
Output:
Push- Peek-
Pop- Traverse-
PRACTICAL-6
Queue using Array:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10
int a[maxsize];
void peek(){
if(front==-1 || front>rear){
else{
printf("%d",a[front]);
void insert(){
int n;
if(rear==maxsize -1){
printf("Queue is full");
scanf("%d",&n);
a[rear]=n;
front = front+1;
else{
scanf("%d",&n);
rear= rear+1;
a[rear]=n;
void delete(){
printf("%d",a[front]);
front = -1;
rear = -1;
else{
printf("%d",a[front]);
void traverse(){
if (front==-1 || front>rear){
else{
printf("%d",a[i]);
int main() {
int i,choice;
while(1){
printf("\nEnter an operation\n1.peek\n2.insert\n3.delete\n4.traverse\n");
scanf("%d",&choice);
switch(choice){
case 1:
peek();
break;
case 2:
insert();
break;
case 3:
delete();
break;
case 4:
traverse();
break;
return 0;
Output:
Peek- Delete-
Insert- Traverse-
PRACTICAL-7
Queue using Linked List:
#include <stdio.h>
#include <stdlib.h>
struct node{
int info;
};
void insert () {
int data;
scanf("%d",&data);
temp->info = data;
if(front==NULL){
temp->link=NULL;
front= temp;
rear = temp;
else{
temp->link= NULL;
rear->link= temp;
rear = temp;
void delete(){
if (front == NULL){
printf("Queue is empty");
else {
printf("%d",front->info);
front=front->link;
void peek(){
if(front ==NULL){
else {
printf("%d",front->info);
void traverse(){
if(front==NULL){
else {
ptr= front;
while(ptr!=NULL){
printf("%d",ptr->info);
ptr=ptr->link;
int main() {
int i,choice;
while(1){
printf("\nEnter an operation\n1.peek\n2.insert\n3.delete\n4.traverse\n");
scanf("%d",&choice);
switch(choice){
case 1:
peek();
break;
case 2:
insert();
break;
case 3:
delete();
break;
case 4:
traverse();
break;
return 0;}
Output:
Peek- Delete-
Insert- Traverse-
PRACTICAL-8
Circular Queue:
#include <stdio.h>
#include <conio.h>
#define maxsize 10
int a[maxsize];
void insert(){
int n;
printf(“Queue is full”);
scanf(“%d”, &n);
front = 0;
rear = 0;
A[front] = n;
} else {
scanf(“%d”, &n);
A[rear] = n;
void del(){
if(front == -1) {
printf(“Queue is Empty”);
printf(“%d”, a[front]);
front = -1;
rear = -1;
} else {
printf(“%d”, a[front]);
}
}
void peek(){
if(front == -1) {
printf(“Queue is Empty”);
} else {
printf(“%d”, a[front]);
void trav(){
else {
int i= front;
while(i!= rear) {
i = (i + 1) % maxsize;
printf(“%d”, a[i]);
int main(){
int i, choice;
while(1) {
scanf(“%d”, &choice);
switch(choice){
case 1: insert();
break;
case 2: del();
break;
case 3: trav();
break;
case 4: peek();
break;
case 5: exit(0);
break;
return 0;
Output:
PRACTICAL-9
Binary Search:
#include <stdio.h>
#include <conio.h>
int main(){
int arr[10], i, low, high, mid, key, found = 0;
scanf(“%d”, &arr[i]);
low = 0;
high = 9;
scanf(“%d”, &key);
if(arr[mid] == key) {
found = 1;
break;
high = mid – 1;
} else {
low = mid + 1;
getch();
return 0;
Output:
PRACTICAL-10
Heap Sort:
#include <stdio.h>
#include <conio.h>
int main(){
int arr[10], i;
scanf(“%d”, &arr[i]);
heapsort(arr, 10);
printf(“%d “, arr[i]);
getch();
return 0;
a[0] = a[i];
a[i] = temp;
heapify(a, I, 0);
int largest = i;
int l = 2 * i + 1;
int r = 2 * i + 2;
if(largest != i){
a[i] = a[largest];
a[largest] = temp;
heapify(a, n, largest);
}
Output:
PRACTICAL-11
Binary Search Tree:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
struct node {
int info;
};
temp->left = NULL;
temp->right = NULL;
temp->info = data;
return temp;
if(root == NULL) {
return create(data);
} else {
else {
inorder(root->left);
printf(“%d, “, root->info);
inorder(root->right);
else {
printf(“%d, “, root->info);
preorder(root->left);
preorder(root->right);
else {
preorder(root->left);
preorder(root->right);
printf(“%d, “, root->info);
if(root==NULL || key==root->info)
return root;
if (key<root->info)
return search(root->left,key);
else
return search(root->right,key);
};
return current->info;
if(root == NULL)
return root;
else
if(root->left == NULL)
free(root);
return temp;
free(root);
return temp;
root->info = minValue;
return root;
while(1) {
scanf(“%d”, &choice);
switch(choice){
break;
else {
inorder(root); }
break;
else {
preorder(root); }
break;
else {
postorder(root); }
break;
scanf(“%d”,&key);
if (search(root,key)!=NULL)
else {
break;
scanf(“%d”, &del);
} else {
Case 7: Exit(0);
break;
return 0;
Output:
PRACTICAL-12
Graph:
#include <stdio.h>
Int V, E;
Adj[i][j] = 0;
Int x = e[i][0];
Int y = e[i][1];
Adj[x – 1][y – 1] = 1;
Adj[y – 1][x – 1] = 1;
Printf(“\nAdjacency Matrix:\n”);
Printf(“%d “, adj[i][j]);
Printf(“\n”);
Int main() {
Int I, j;
Scanf(“%d”, &V);
Scanf(“%d”, &E);
Int adj[V][V];
Int e[E][2];
Create(adj, e);
Print(adj);
Return 0;
Output: