C program to implement Towers of Hanoi and Binary Search

C Recursion:
C Program to implement Towers of Hanoi and Binary Search using the Recursion method. Recursive functions solves the complexity of the problem by calling the function again and again itself. Using recursive methods we can save execution time and memory. In this program we have two recursive functions for Binary search and the Tower of Hanoi problem. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include<stdio.h>
main() {
int n, a[50], key, opn, i, pos;

do {
clrscr();
printf(
" nn Press 1 -> Binary Search , 2-> Towers of Hanoi 3-> Quitn");
scanf("%d", &opn);
switch (opn) {
case 1:
printf(" How Many Elements?");
scanf("%d", &n);
printf(" Read all the elements is ASC order n");
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
printf(" Read the Key Elementn");
scanf("%d", &key);
pos = BS(a, key, 1, n);
if (pos)
printf(" Success: %d found at %d n", key, pos);
else
printf(" Falure: %d Not found in the list ! n", key);
break;
case 2:
printf("nn How Many Disks ?");
scanf("%d", &n);
printf("nn Result of Towers of Hanoi for %d Disks n", n);
tower(n, 'A', 'B', 'C');
printf("nn Note: A-> Source, B-> Intermediate, C-> Destinationn");
break;
case 3:
printf(" Terminating n");
break;
default:
printf(" Invalid Option !! Try Again !! n");
}
printf(" Press a Key. . . ");
getch();
} while (opn != 3);
}

int BS(int a[], int key, int low, int high) {
int mid;

if (low > high)
return 0; /* failure */
else {
mid = (low + high) / 2;
if (a[mid] == key)
return mid; /* Success */
if (key < a[mid])
return (BS(a, key, low, mid - 1));
return (BS(a, key, mid + 1, high));
}
}

tower(int n, char src, char intr, char dst) {
if (n > 0) {
tower(n - 1, src, dst, intr);
printf("Move disk %d from %c to %c n", n, src, dst);
tower(n - 1, intr, src, dst);
}
}

Read more Similar C Programs

Data Structures


C Recursion

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program for Binary Search Tree Creation and Traversals

C Program for Binary Search Tree Creation and Traversals. Binary Search Tree is a Tree which has the following properties, 1.The left sub tree of a node contains smaller nodes than a root node. 2.The right sub tree of a node contains greater nodes than a root node. 3.Both the left and right sub trees must also be binary search trees. There are three types of tree traversals, Preorder, Postorder, and Inorder. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on  www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
* 
*                                  Happy Coding
***********************************************************/


#include <stdlib.h>
typedef struct tnode {
 int data;
 struct tnode *right, *left;
} TNODE;

TNODE *CreateBST(TNODE *, int);
void Inorder(TNODE *);
void Preorder(TNODE *);
void Postorder(TNODE *);

main() {
 TNODE *root = NULL; /* Main Program */
 int opn, elem, n, i;
 do {
  clrscr();
  printf("n ### Binary Search Tree Operations ### nn");
  printf("n Press 1-Creation of BST");
  printf("n       2-Traverse in Inorder");
  printf("n       3-Traverse in Preorder");
  printf("n       4-Traverse in Postorder");
  printf("n       5-Exitn");
  printf("n       Your option ? ");
  scanf("%d", &opn);
  switch (opn) {
  case 1:
   root = NULL;
   printf("nnBST for How Many Nodes ?");
   scanf("%d", &n);
   for (i = 1; i <= n; i++) {
    printf("nRead the Data for Node %d ?", i);
    scanf("%d", &elem);
    root = CreateBST(root, elem);
   }
   printf("nBST with %d nodes is ready to Use!!n", n);
   break;
  case 2:
   printf("n BST Traversal in INORDER n");
   Inorder(root);
   break;
  case 3:
   printf("n BST Traversal in PREORDER n");
   Preorder(root);
   break;
  case 4:
   printf("n BST Traversal in POSTORDER n");
   Postorder(root);
   break;
  case 5:
   printf("nn Terminating nn");
   break;
  default:
   printf("nnInvalid Option !!! Try Again !! nn");
   break;
  }
  printf("nnnn  Press a Key to Continue . . . ");
  getch();
 } while (opn != 5);
}

TNODE *CreateBST(TNODE *root, int elem) {
 if (root == NULL) {
  root = (TNODE *) malloc(sizeof(TNODE));
  root->left = root->right = NULL;
  root->data = elem;
  return root;
 } else {
  if (elem < root->data)
   root->left = CreateBST(root->left, elem);
  else if (elem > root->data)
   root->right = CreateBST(root->right, elem);
  else
   printf(" Duplicate Element !! Not Allowed !!!");

  return (root);
 }
}
void Inorder(TNODE *root) {
 if (root != NULL) {
  Inorder(root->left);
  printf(" %d ", root->data);
  Inorder(root->right);
 }
}

void Preorder(TNODE *root) {
 if (root != NULL) {
  printf(" %d ", root->data);
  Preorder(root->left);
  Preorder(root->right);
 }
}

void Postorder(TNODE *root) {
 if (root != NULL) {
  Postorder(root->left);
  Postorder(root->right);
  printf(" %d ", root->data);
 }
}

Read more Similar C Programs
Data Structures
Breadth First Search(BFS)
Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program to implement Doubly Linked List Operations

Data structures using C, Linked list is a data structure in which the objects are arranged in a linear order. In Doubly Linked List, each node contains three fields, one is to store data and other two fields stores the reference(address) of the previous and next node. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include <stdlib.h>
typedef struct dnode {
int data;
struct dnode *next, *prev;
} DNODE;

DNODE *InsFront(DNODE *, int);
DNODE *InsBefore(DNODE *, int, int);
DNODE *DelNode(DNODE *, int);
void Display(DNODE *);

main() {
DNODE *start = NULL; /* Main Program */
int opn, elem, info, n, i;
do {
clrscr();
printf("n ### Doubly Linked List Operations ### nn");
printf("n Press 1-Creation with front Insertion");
printf("n 2-Insert Before a Given Node");
printf("n 3-Delete a Given Node");
printf("n 4-Display");
printf("n 5-Exitn");
printf("n Your option ? ");
scanf("%d", &opn);
switch (opn) {
case 1:
printf("nnHow Many Nodes ?");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("nRead the Data for Node %d ?", i);
scanf("%d", &elem);
start = InsFront(start, elem);
}
printf("nDoubly Linked list with %d nodes is ready toUse!!n", n);
break;
case 3:
printf(" Read the Info of the Node to be deleted ? ");
scanf("%d", &info);
start = DelNode(start, info);
break;
case 2:
printf(" Read the Data for New noden");
scanf("%d", &elem);
printf(
" Read the Info of the Node(to the left of which new node tobe inserted ? ");
scanf("%d", &info);
start = InsBefore(start, elem, info);
break;
case 4:
printf(" Doubly Linked List is n");
Display(start);
break;
case 5:
printf("nn Terminating nn");
break;
default:
printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
} while (opn != 5);
}

DNODE *InsFront(DNODE *start, int elem) {
DNODE *temp;
temp = (DNODE *) malloc(sizeof(DNODE));
if (temp == NULL) {
printf(" Out of Memory !! Overflow !!!");
return (start);
} else {
temp->data = elem;
temp->prev = NULL;
temp->next = start;
start->prev = temp;
printf(" New Node has been inserted at Front Successfully !!");
return (temp);
}
}

DNODE *InsBefore(DNODE *start, int elem, int info) {
DNODE *temp, *t;
temp = (DNODE *) malloc(sizeof(DNODE));
if (temp == NULL) {
printf(" Out of Memory !! Overflow !!!");
return (start);
} else {
temp->data = elem;
temp->next = NULL;
temp->prev = NULL;

if (start->data == info) /* Front Insertion */
{
temp->next = start;
start->prev = temp;
return (temp);
} else {
t = start;
while (t != NULL && t->data != info)
t = t->next;
if (t->data == info) /* Node found */
{
temp->next = t;
temp->prev = t->prev;
t->prev->next = temp;
t->prev = temp;
} else
printf(" Node not found,Invalid Info !!!");
return (start);
}
}
}

DNODE *DelNode(DNODE *start, int info) {
DNODE *t;
if (start == NULL) {
printf(" Underflow!!!");
return (start);
} else {
t = start;
if (start->data == info) /* Front Deletion */
{
start = start->next;
start->prev = NULL;
t->next = NULL;
free(t);
return (start);
} else {
while (t != NULL && t->data != info)
t = t->next;
if (t->data == info) /* node to be deleted found*/
{
t->prev->next = t->next;
t->next->prev = t->prev;
t->next = t->prev = NULL;
free(t);
} else
printf("Node not found, Invalid Info !!");
return (start);
}
}
}

void Display(DNODE *start) {
DNODE *t;
if (start == NULL)
printf("Empty Listn");
else {
t = start;
printf("Forward Traversal nn Start->");
while (t) {
printf("[%d]->", t->data);
t = t->next;
}
printf("Nulln");
}
}

Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program to implement QUEUE operations using Linked Lists

Data structures using C,
C Program to implement QUEUE operations using Linked list. Queue is a abstract data type, In which entities are inserted into the rear end and deleted from the front end. Here to implement queue we used the Linked lists!. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/


#include <stdlib.h>
typedef struct node {
int data;
struct node *link;
} NODE;

void Insert(int);
int Delete();
void Display();
NODE *front, *rear; /* Global Declarations */

main() {
/* Main Program */
int opn, elem;
front = rear = NULL;
do {
clrscr();
printf("n ### Linked List Implementation of QUEUE Operations ### nn");
printf("n Press 1-Insert, 2-Delete, 3-Display,4-Exitn");
printf("n Your option ? ");
scanf("%d", &opn);
switch (opn) {
case 1:
printf("nnRead the Element to be Inserted ?");
scanf("%d", &elem);
Insert(elem);
break;
case 2:
elem = Delete();
if (elem != -1)
printf(" Deleted Node(From Front)with the Data: %dn", elem);
break;
case 3:
printf("Linked List Implementation of Queue: Status:n");
Display();
break;
case 4:
printf("nn Terminating nn");
break;
default:
printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
} while (opn != 4);
}

void Insert(int info) {
NODE *temp;
temp = (NODE *) malloc(sizeof(NODE));
if (temp == NULL)
printf(" Out of Memory !! Overflow !!!");
else {
temp->data = info;
temp->link = NULL;
if (front == NULL) {
front = rear = temp;
} /* First Node? */
else {
rear->link = temp;
rear = temp;
} /* Insert End */
printf(" Node has been inserted at End Successfully !!");
}
}

int Delete() {
int info;
NODE *t;
if (front == NULL) {
printf(" Underflow!!!");
return -1;
} else {
t = front;
info = front->data;
if (front == rear)
rear = NULL;
front = front->link;
t->link = NULL;
free(t);
return (info);
}
}

void Display() {
NODE *t;
if (front == NULL)
printf("Empty Queuen");
else {
t = front;
printf("Front->");
while (t) {
printf("[%d]->", t->data);
t = t->link;
}
printf("Rearn");
}
}
Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program to implement STACK operations using Linked Lists

Data structures using C, Stack is a data structure in which the objects are arranged in a non linear order. In stack, elements are aded or deleted from only one end, i.e. top of the stack. In this program, we implement the stack operations using linked list. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/


#include <stdlib.h>
typedef struct node {
int data;
struct node *link;
} NODE;

void Push(int);
int pop();
void Display();
NODE *top = NULL; /* Global Declarations */

main() {
/* Main Program */
int opn, elem;
do {
clrscr();
printf("n ### Linked List Implementation of STACK Operations ### nn");
printf("n Press 1-Push, 2-Pop, 3-Display,4-Exitn");
printf("n Your option ? ");
scanf("%d", &opn);
switch (opn) {
case 1:
printf("nnRead the Element tobe pushed ?");
scanf("%d", &elem);
Push(elem);
break;
case 2:
elem = Pop();
if (elem != -1)
printf(" Deleted Node(From Top)with the Data: %dn", elem);
break;
case 3:
printf("Linked List Implementation of Stack: Status:n");
Display();
break;
case 4:
printf("nn Terminating nn");
break;
default:
printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
} while (opn != 4);
}

void Push(int info) {
NODE *temp;
temp = (NODE *) malloc(sizeof(NODE));
if (temp == NULL)
printf(" Out of Memory !! Overflow !!!");
else {
temp->data = info;
temp->link = top;
top = temp;
printf(" Node has been inserted at Top(Front) Successfully !!");
}
}

int Pop() {
int info;
NODE *t;
if (top == NULL) {
printf(" Underflow!!!");
return -1;
} else {
t = top;
info = top->data;
top = top->link;
t->link = NULL;
free(t);
return (info);
}
}

void Display() {
NODE *t;
if (top == NULL)
printf("Empty Stackn");
else {
t = top;
printf("Top->");
while (t) {
printf("[%d]->", t->data);
t = t->link;
}
printf("Nulln");
}
}
Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

Linked List Operations

Data structures using C,
Linked list is a data structure in which the objects are arranged in a linear order. Linked List contains group of nodes, in which each node contains two fields, one is data field and another one is the reference field which contains the address of next node. In this program we insert, delete, search, and display the linked list. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/
#include <stdlib.h>
#include <string.h>
typedef struct node {
int sid;
char sname[25];
int ssem;
struct node *link;
} NODE;

NODE *InsFront(NODE *, int, char *, int);
NODE *InsBack(NODE *, int, char *, int);
NODE *InsPos(NODE *, int, char *, int, int);
NODE *DelNode(NODE *, int);
NODE *SrchUpdate(NODE *, int);
void Display(NODE *);

main() {
NODE *start = NULL; /* Main Program */
int opn, id, sem, p, insopn;
char name[25];
do {
clrscr();
printf("n ### Linked List Operations ### nn");
printf("n Press 1-Insertion, 2-Deletion, 3-Search, 4-Display,5-Exitn");
printf("n Your option ? ");
scanf("%d", &opn);
switch (opn) {
case 1:
printf("Insertion at: Press 1->Front 2->Back 3->Pos ? ");
scanf("%d", &insopn);
printf("nnRead the Sid,Name, and Sem details ?");
scanf("%d%s%d", &id, name, &sem);
if (insopn == 1)
start = InsFront(start, id, name, sem);
else if (insopn == 2)
start = InsBack(start, id, name, sem);
else if (insopn == 3) {
printf(" At What Position ? ");
scanf("%d", &p);
start = InsPos(start, id, name, sem, p);
}
break;

case 2:
printf(" Read the Student Id of the Node to be deleted ? ");
scanf("%d", &id);
start = DelNode(start, id);
break;
case 3:
printf(" Read the Student Id of the Node to be Searched ? ");
scanf("%d", &id);
start = SrchUpdate(start, id);
break;
case 4:
printf(" Linked List is n");
Display(start);
break;
case 5:
printf("nn Terminating nn");
break;
default:
printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
} while (opn != 5);
}

NODE *InsFront(NODE *st, int id, char *name, int sem) {
NODE *temp;
temp = (NODE *) malloc(sizeof(NODE));
if (temp == NULL) {
printf(" Out of Memory !! Overflow !!!");
return (st);
} else {
temp->sid = id;
strcpy(temp->sname, name);
temp->ssem = sem;
temp->link = st;
printf(" Node has been inserted at Front Successfully !!");
return (temp);
}
}

NODE *InsBack(NODE *st, int id, char *name, int sem) {
NODE *temp, *t;
temp = (NODE *) malloc(sizeof(NODE));
if (temp == NULL) {
printf(" Out of Memory !! Overflow !!!");
return (st);
} else {
temp->sid = id;
strcpy(temp->sname, name);
temp->ssem = sem;
temp->link = NULL;
if (st == NULL)
return (temp);
else {
t = st;
while (t->link != NULL)
t = t->link;
t->link = temp;
printf(" Node has been inserted at Back Successfully !!");
return (st);
}
}
}

NODE *InsPos(NODE *st, int id, char *name, int sem, int pos) {
NODE *temp, *t, *prev;
int cnt;
temp = (NODE *) malloc(sizeof(NODE));
if (temp == NULL) {
printf(" Out of Memory !! Overflow !!!");
return (st);
} else {
temp->sid = id;
strcpy(temp->sname, name);
temp->ssem = sem;
temp->link = NULL;
if (pos == 1) /* Front Insertion */
{
temp->link = st;
return (temp);
} else {
t = st;
cnt = 1;
while (t != NULL && cnt != pos) {
prev = t;
t = t->link;
cnt++;
}
if (t) /* valid Position Insert new node*/
{
prev->link = temp;
temp->link = t;
} else
printf(" Invalid Position !!!");
printf(" Node has been inserted at given Position Successfully !!");
return (st);
}
}
}
NODE *DelNode(NODE *st, int id) {
NODE *t, *prev;
if (st == NULL) {
printf(" Underflow!!!");
return (st);
} else {
t = st;
if (st->sid == id) /* Front Deletion */
{
st = st->link;
t->link = NULL;
free(t);
return (st);
} else {
while (t != NULL && t->sid != id) {
prev = t;
t = t->link;
}
if (t) /* node to be deleted found*/
{
prev->link = t->link;
t->link = NULL;
free(t);
} else
printf(" Invalid Student Id !!!");
return (st);
}
}
}

NODE *SrchUpdate(NODE *st, int id) {
NODE *t;
if (st == NULL) {
printf(" Empty List !!");
return (st);
} else {
t = st;
while (t != NULL && t->sid != id) {
t = t->link;
}
if (t) /* node to be Updated found*/
{
printf(" Node with Student Id %d found inthe List !n", id);
printf(" Read the New Id,Name and Sem forthe Studentn");
scanf("%d%s%d", t->sid, t->sname, t->ssem);
} else
printf(" Invalid Student Id !!!");
return (st);
}
}

void Display(NODE *st) {
NODE *t;
if (st == NULL)
printf("Empty Listn");
else {
t = st;
printf("Start->");
while (t) {
printf("[%d,%s,%d]->", t->sid, t->sname, t->ssem);
t = t->link;
}
printf("Nulln");
}
}

Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program for Circular QUEUE Operations

Data structures using C,
C Program to implement circular queue. Queue is a abstract data type, In which entities are inserted into the rear end and deleted from the front end. In circular queue is connected to end to end, i,e rear and front end are connected. Compare to normal queue, Circular queue is more advantages. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/


#define SIZE 5 /* Size of Circular Queue */
int CQ[SIZE], f = -1, r = -1; /* Global declarations */

CQinsert(int elem) { /* Function for Insert operation */
if (CQfull())
printf("nn Overflow!!!!nn");
else {
if (f == -1)
f = 0;
r = (r + 1) % SIZE;
CQ[r] = elem;
}
}

int CQdelete() { /* Function for Delete operation */
int elem;
if (CQempty()) {
printf("nnUnderflow!!!!nn");
return (-1);
} else {
elem = CQ[f];
if (f == r) {
f = -1;
r = -1;
} /* Q has only one element ? */
else
f = (f + 1) % SIZE;
return (elem);
}
}

int CQfull() { /* Function to Check Circular Queue Full */
if ((f == r + 1) || (f == 0 && r == SIZE - 1))
return 1;
return 0;
}

int CQempty() { /* Function to Check Circular Queue Empty */
if (f == -1)
return 1;
return 0;
}

display() { /* Function to display status of Circular Queue */
int i;
if (CQempty())
printf(" n Empty Queuen");
else {
printf("Front[%d]->", f);
for (i = f; i != r; i = (i + 1) % SIZE)
printf("%d ", CQ[i]);
printf("%d ", CQ[i]);
printf("<-[%d]Rear", r);
}
}

main() { /* Main Program */
int opn, elem;
do {
clrscr();
printf("n ### Circular Queue Operations ### nn");
printf("n Press 1-Insert, 2-Delete,3-Display,4-Exitn");
printf("n Your option ? ");
scanf("%d", &opn);
switch (opn) {
case 1:
printf("nnRead the element to be Inserted ?");
scanf("%d", &elem);
CQinsert(elem);
break;
case 2:
elem = CQdelete();
if (elem != -1)
printf("nnDeleted Element is %d n", elem);
break;
case 3:
printf("nnStatus of Circular Queuenn");
display();
break;
case 4:
printf("nn Terminating nn");
break;
default:
printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
} while (opn != 4);
}

Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program for Simple/Linear QUEUE Operations

Data structures using C,
C Program to implement circular queue. Queue is a abstract data type, In which entities are inserted into the rear end and deleted from the front end. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#define SIZE 5 /* Size of Queue */
int Q[SIZE],f=0,r=-1; /* Global declarations */

Qinsert(int elem)
{ /* Function for Insert operation */
if( Qfull()) printf("nn Overflow!!!!nn");
else
{
++r;
Q[r]=elem;
}
}

int Qdelete()
{ /* Function for Delete operation */
int elem;
if(Qempty()){ printf("nnUnderflow!!!!nn");
return(-1); }
else
{
elem=Q[f];
f=f+1;
return(elem);
}
}

int Qfull()
{ /* Function to Check Queue Full */
if(r==SIZE-1) return 1;
return 0;
}

int Qempty()
{ /* Function to Check Queue Empty */
if(f > r) return 1;
return 0;
}

display()
{ /* Function to display status of Queue */
int i;
if(Qempty()) printf(" n Empty Queuen");
else
{
printf("Front->");
for(i=f;i<=r;i++)
printf("%d ",Q[i]);
printf("<-Rear");
}
}

main()
{ /* Main Program */
int opn,elem;
do
{
clrscr();
printf("n ### Queue Operations ### nn");
printf("n Press 1-Insert, 2-Delete,3-Display,4-Exitn");
printf("n Your option ? ");
scanf("%d",&opn);
switch(opn)
{
case 1: printf("nnRead the element to be Inserted ?");
scanf("%d",&elem);
Qinsert(elem); break;
case 2: elem=Qdelete();
if( elem != -1)
printf("nnDeleted Element is %d n",elem);
break;
case 3: printf("nnStatus of Queuenn");
display(); break;
case 4: printf("nn Terminating nn"); break;
default: printf("nnInvalid Option !!! Try Again !! nn");
break;
}
printf("nnnn Press a Key to Continue . . . ");
getch();
}while(opn != 4);
}



Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program for Evaluation of Postfix Expression

C Program for Evaluation of Postfix ExpressionIn this program we evaluate the Postfix Expression, using the stack. For example, 456*+7- is the postfix expression, from left one by one it is inserted into the stack, and after evaluation the answer is 27. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/


#define SIZE 50 /* Size of Stack */
#include <ctype.h>
int s[SIZE];
int top=-1; /* Global declarations */

push(int elem)
{ /* Function for PUSH operation */
s[++top]=elem;
}

int pop()
{ /* Function for POP operation */
return(s[top--]);
}

main()
{ /* Main Program */
char pofx[50],ch;
int i=0,op1,op2;
printf("nnRead the Postfix Expression ? ");
scanf("%s",pofx);
while( (ch=pofx[i++]) != '')
{
if(isdigit(ch)) push(ch-'0'); /* Push the operand */
else
{ /* Operator,pop two operands */
op2=pop();
op1=pop();
switch(ch)
{
case '+':push(op1+op2);break;
case '-':push(op1-op2);break;
case '*':push(op1*op2);break;
case '/':push(op1/op2);break;
}
}
}
printf("n Given Postfix Expn: %sn",pofx);
printf("n Result after Evaluation: %dn",s[top]);
}
Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com

C Program for Infix to Postfix Conversion.

C Program for Infix to Postfix Conversion. Here we covert the infix expression to postfix expression by using stack. for example a*b-c/d is the infix expression, and equivalent postfix expression is: ab*cd/-. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact info@c-program-example.com
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#define SIZE 50 /* Size of Stack */
#include <ctype.h>
char s[SIZE];
int top = -1; /* Global declarations */

push(char elem) { /* Function for PUSH operation */
s[++top] = elem;
}

char pop() { /* Function for POP operation */
return (s[top--]);
}

int pr(char elem) { /* Function for precedence */
switch (elem) {
case '#':
return 0;
case '(':
return 1;
case '+':
case '-':
return 2;
case '*':
case '/':
return 3;
}
}

main() { /* Main Program */
char infx[50], pofx[50], ch, elem;
int i = 0, k = 0;
printf("nnRead the Infix Expression ? ");
scanf("%s", infx);
push('#');
while ((ch = infx[i++]) != '') {
if (ch == '(')
push(ch);
else if (isalnum(ch))
pofx[k++] = ch;
else if (ch == ')') {
while (s[top] != '(')
pofx[k++] = pop();
elem = pop(); /* Remove ( */
} else { /* Operator */
while (pr(s[top]) >= pr(ch))
pofx[k++] = pop();
push(ch);
}
}
while (s[top] != '#') /* Pop from stack till empty */
pofx[k++] = pop();
pofx[k] = ''; /* Make pofx as valid string */
printf("nnGiven Infix Expn: %s Postfix Expn: %sn", infx, pofx);
}

Read more Similar C Programs
Data Structures

Learn C Programming

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

(c) www.c-program-example.com