Anda di halaman 1dari 36

 

Program 1
 
       
 
Write a C Program to create a sequential file with
atleast 5 records, each record having the structure
shown below:
 
USN Name Marks1 Marks2 Marks3
Non-zero 25 Positive Positive Positive
positive Characters Integer Integer Integer
integer
 
 
Write necessary functions
a. To display all the records in the file.
b. To search for a specific record based on the USN.
In case the record is not found, suitable message
should be displayed. Both the options in this case
must be demonstrated.
 
 
ESTABLISH THE RECORD STRUCTURE AS TO HOW STUDENT INFORMATION IS
STORED

struct student

              int usn;

              char name[26];

              int sub1;

              int sub2;

              int sub3;

};

struct student Std;

FILE *fp;

ADDRECORD FUNCTION

1. READ INPUT.
2. CHECK WHETHER USN AND MARKS ARE VALID.
3. WRITE TO FILE IN APPEND MODE (use builtin function fopen() ).

SEARCH_RECORD

1. READ INPUT.
2. OPEN FILE IN READ MODE.
3. CHECK WHETHER FILE EXISTS.
4. IF YES START SEARCHING UNTIL A MATCH IS FOUND.
5. MATCH FOUND DISPLAY THAT RECORD.
6. ELSE DISPLAY APPROPRIATE MESSAGE.

DISPLAY_ALL

1. OPEN FILE IN READ MODE.


2. CHECK WHETHER FILE EXISTS.
3. IF YES DISPLAY EACH RECORD UNTIL YOU ENCOUNTER END OF
FILE.
4. ELSE DISPLAY APPROPRIATE MESSAGE.

Program 2
 
 
Write and demonstrate the following C functions:
a. newStrCpy that does the same job as strcpy
b. newStrCat that does the same job as strcat
without using any library functions.
 
 

NEWSTRCPY FUNCTION

int newStrCpy(char*,char*);

1. READ AN INPUT STRING.


2. COPY CONTENTS OF INPUT STRING INTO OUTPUT STRING
CHARACTER BY CHARACTER UNTILL YOU ENCOUNTER THE NULL
TERMINATOR IN THE INPUT STRING.
3. APPEND A NULL TERMINATOR AT THE END OF THE OUTPUT
STRING.

NEWSTRCAT FUNCTION

int newStrCat(char*,char*,char*);

1. READ TWO INPUT STRINGS.


2. TRAVERSE THE FIRST INPUT STRING UNTILL YOU ENCOUNTER
THE NULL TERMINATOR.
3. FROM THERE ON APPEND CONTENTS OF SECOND STRING TO
FIRST STRING CHARACTER BY CHARACTER UNTILL YOU
ENCOUNTER THE NULL TERMINATOR IN THE SECOND STRING.
4. APPEND A NULL TERMINATOR AT THE END OF THE OUTPUT
STRING.

Program 3
       
Write a C Program, which accepts the Internet
Protocol (IP) address in decimal dot format
(ex.153.18.8.105) and converts it into 32-bit long
integer (ex. 2568095849) using strtok library function
and unions.
 
 

STRUCTURE OF THE UNION

union address

              char a[20];

              char b[20];

              char c[20];

              char d[20];

};

union address ad1;

 
 

CONVERTING IP-ADDRESS INTO EQUIVALENT 32-BIT INTEGER

1. READ THE INPUT IP ADDRESS( obtained in A.B.C.D where A,B,C,D are


integers in the range 0 to 255) AS A STRING.
2. EXTRACT A, B, C, D PARTS FORM THE STRING USING THE strtok()
BUILTIN FUNCTION.
3. THEN PERFORM THE FOLLOWING COMPUTATION TO OBTAIN THE
EQUIVALENT 32BIT ADDRESS OF THE GIVEN IP ADDRESS.

32-BIT IP ADDRESS = A * 24 + B * 16 + C * 8 + D

Program 4
       
Write a C Program to construct a stack of integers
and to perform the following operations on it:
a. Push
b. Pop
c. Display
The program should print appropriate messages for
stack overflow, stack underflow, and stack empty.
 
 

 
 

GLOBAL SECTION

1. DEFINE SIZE OF STACK.


2. ALLOCATE REQUIRED ARRAY MEMORY.
3. INITIALISE STACK POINTER TOP TO -1.

IMPLEMENTING THE PUSH FUNCTION

void push()

1. CHECK WHETHER STACK IS FULL.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE INCREMENT TOP POINTER AND PLACE THE ELEMENT TO BE
PUSHED AT THAT POSITION.

IMPLEMENTING THE  POP FUNCTION

void pop();

1. CHECK WHETHER STACK IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DELETE THE ELEMENT POINTED TO BY THE TOP POINTER
THEN DECREMENT TOP POINTER.

 
 

IMPLEMENTING THE DISPLAY FUNCTION

void display()

1. CHECK WHETHER STACK IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY EVERY ELEMENT IN THE STACK.

 
 

Program 5
 
Write a C Program to convert and print a given valid
parenthesized infix arithmetic expression to postfix
expression. The expression consists of single
character operands and the binary operators +
(plus), - (minus), * (multiply) and / (divide).
 
 
 

CONVERSION OF INFIX EXPRESSION TO POSTFIX EXPRESSION

1. READ THE INFIX EXPRESSION AS A STRING.


2. SCAN THE EXPRESSION CHARACTER BY CHARACTER TILL THE
END. REPEAT THE FOLLOWING OPERATIONS
a. IF IT IS AN OPERAND ADD IT TO THE POSTFIX EXPRESSION.
b. IF IT IS A LEFT PARANTHESES PUSH IT ONTO THE STACK.
c. IF IT IS A RIGHT PARANTHESES POP OUT ELEMENTS FROM
THE STACK AND ASSIGN IT TO THE POSTFIX STRING.POP
OUT THE LEFT PARANTHESES BUT DON’T ASSIGN TO
POSTFIX.
d. IF IT IS A OPERATOR COMPARE ITS PRECEDENCE WITH THAT
OF THE ELEMENT AT THE TOP OF STACK.
i. IF IT IS GREATER PUSH IT ONTO THE STACK.
ii. ELSE POP AND ASSIGN ELEMENTS IN THE STACK TO
THE POSTFIX EXPRESSION UNTILL YOU FIND ONE SUCH
ELEMENT.
3. IF YOU HAVE REACHED THE END OF THE EXPRESSION, POP OUT
ANY LEFTOVER ELEMENTS IN THE STACK TILL IT BECOMES
EMPTY.
4. APPEND A NULL TERMINATOR AT THE END DISPLAY THE RESULT.

Program 6
       
Write a C Program to evaluate a valid suffix/postfix
expression using stack. Assume that the
suffix/postfix expression is read as a single line
consisting of non-negative single digit operands and
binary arithmetic operators. The arithmetic
operators are
+ (add), - (subtract), * (multiply) and / (divide).
 
 

CONVERSION OF INFIX EXPRESSION TO POSTFIX EXPRESSION

1. READ THE INFIX EXPRESSION AS A STRING.


2. SCAN THE EXPRESSION CHARACTER BY CHARACTER TILL THE
END. REPEAT THE FOLLOWING OPERATIONS
a. IF IT IS AN OPERAND PUSH IT ONTO THE STACK.
b. IF IT IS AN OPERATOR
i. POP OUT TWO OPERANDS FROM STACK
ii. APPLY THE OPERATOR ONTO THE POPPED OPERANDS.
iii. STORE THE RESULT BACK ON TO THE STACK.
3. ON REACHING THE END OF EXPRESSION POP OUT THE CONTENTS
OF THE STACK AND DISPLAY AS THE RESULT.

Program 7
 
Write a C Program to simulate the working of a
queue of integers using an array. Provide the
following operations:
a. Insert
b. Delete
c. Display
 

GLOBAL SECTION

1. DEFINE SIZE OF QUEUE.


2. ALLOCATE REQUIRED ARRAY MEMORY.
3. INITIALISE POINTERS FRONT TO 0 AND REAR TO -1.

IMPLEMENTING THE INSERT_REAR FUNCTION

1. CHECK WHETHER QUEUE IS FULL.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE INCREMENT REAR POINTER AND PLACE THE ELEMENT TO BE
PUSHED AT THAT POSITION.

IMPLEMENTING THE DELETE_FRONT FUNCTION

1. CHECK WHETHER QUEUE IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DELETE THE ELEMENT POINTED TO BY THE FRONT POINTER
THEN INCREMENT FRONT POINTER.

IMPLEMENTING THE DISPLAY FUNCTION

1. CHECK WHETHER QUEUE IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY ELEMENTS FROM FRONT TO REAR.
 

Program 8
 
Write a C Program to simulate the working of a
circular queue of integers using an array. Provide
the following operations:
a. Insert
b. Delete
c. Display
 
 

GLOBAL SECTION

1. DEFINE SIZE OF QUEUE.


2. ALLOCATE REQUIRED ARRAY MEMORY.
3. INITIALISE POINTERS FRONT TO -1 AND REAR TO -1.

IMPLEMENTING THE INSERT_REAR FUNCTION

1. CHECK WHETHER QUEUE IS FULL.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE INCREMENT REAR POINTER AND PLACE THE ELEMENT TO BE
PUSHED AT THAT POSITION.

IMPLEMENTING THE DELETE_FRONT FUNCTION

1. CHECK WHETHER QUEUE IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DELETE THE ELEMENT POINTED TO BY THE FRONT POINTER
THEN INCREMENT FRONT POINTER.

IMPLEMENTING THE DISPLAY FUNCTION

1. CHECK WHETHER QUEUE IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY ELEMENTS FROM FRONT TO REAR.

Program 9
Write a C Program using dynamic variables and
pointers, to construct a singly linked list consisting
of the following information in each node: student
id (integer), student name (character string) and
semester (integer). The operations to be supported
are:
 
a. The insertion operation
i. At the front of a list
ii. At the back of the list
iii. At any position in the list
 
b. Deleting a node based on student id. If the
specified node is not present in the list an error
message should be displayed. Both the options
should be demonstrated.
 
c. Searching a node based on student id and update
the information content. If the specified
node is not present in the list an error message
should be displayed. Both situations should
be displayed.
 
d. Displaying all the nodes in the list.
 
 

STRUCTURE OF EACH NODE

struct node

              int Id;


              char Name[30];

              int Sem;

              struct node *link;

};

typedef struct node* NODE;

GETNODE FUNCTION

NODE getnode(void)

USING THE BUILTIN malloc() FUNCTION RETURN A POINTER TO A


CHUNK OF MEMORY WHOSE SIZE IS SAME AS THAT OF THE NODE.

FREENODE FUNCTION

void freenode(NODE x)

USING THE free() FUNCTION DEALLOCATE MEMORY ALLOCATED TO A


PARTICULAR NODE.

 
INSERT_FRONT FUNCTION

NODE ins_front(char name[],int id,int sem,NODE first)

     

first

B
C
D
A
 

          temp                                                                                                              NULL

1. CREATE A NEWNODE AND STORE THE INFORMATION IN IT.


2. INSERT THE NODE AT THE FRONT AND MAKE THIS NODE AS THE
NEW FIRST NODE.

INSERT_REAR FUNCTION

 
NODE ins_rear(char name[],int id,int sem,NODE first)

B
C
D
A
first                                                                         cur                                 temp

                                                                                                                                           
NULL

1. CREATE A NEW NODE POINTED TO BY TEMP STORE THE


INFORMATION IN IT.
2. TRAVERSE THE LIST TO REACH ITS END INSERT THE NEW NODE
AFTER THE LAST NODE IN THE LIST.

 
INSERT_AT_POSITION FUNCTION

NODE ins_pos(char name[],int id,int sem,int pos,NODE first)

1. CREATE A NEW NODE POINTED TO BY TEMP STORE THE


INFORMATION IN IT.
2. OBTAIN THE POSITON AT WHICH IT HAS TO BE INSERTED.
3. CHECK WHETHER ITS VALID IF NOT DISPLAY AN ERROR
MESSAGE.
4. TRAVERSE THE LIST TO OBTAIN THE ADDRESSES OF THE NODE
AT THE SPECIFIED POSITION AS WELL AS ITS PREVIOUS NODE.
5. INSERT THE NEW NODE IN BETWEEN THE TWO NODES.

DELETE_STUDENT FUNCTION

NODE del_std(int id, NODE first)

1. OBTAIN THE STUDENT_ID TO DELETE.


2. SCAN THE LIST TO FIND A NODE CONTAINING A MATCHING ID.
3. IF NOT FOUND DISPLAY AN ERROR MESSAGE.
4. ELSE OBTAIN THE ADDRESSES OF NODES PREVIOUS AND AFTER
THE FOUND NODE.
5. ESTABLISH LINK BETWEEN THESE NODES.
6. THEN DELETE THE NODE FOUND.

 
 

SEARCH_UPDATE FUNCTION

void search_upd(int id,NODE first)

1. OBTAIN THE STUDENT_ID TO UPDATE.


2. SCAN THE LIST TO FIND A NODE CONTAINING A MATCHING ID.
3. IF NOT FOUND DISPLAY AN ERROR MESSAGE.
4. ELSE UPDATE THE CONTENTS OF THE NODE SUITABLY.

DISPLAY FUNCTION

void display(NODE first)

1. CHECK WHETHER THE LIST IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY THE CONTENTS OF EACH NODE TIL YOU REACH
THE END OF THE LIST.

Program 10
 
Write a C Program using dynamic variables and
pointers to construct a stack of integers using singly
linked list and to perform the following operations:
a. Push
b. Pop
c. Display
The program should print appropriate messages for
stack overflow and stack empty.
 
 

STRUCTURE OF EACH NODE

struct node

              int Info;

              struct node *link;

};

typedef struct node* NODE;

GETNODE FUNCTION

NODE getnode(void)

USING THE BUILTIN malloc() FUNCTION RETURN A POINTER TO A


CHUNK OF MEMORY WHOSE SIZE IS SAME AS THAT OF THE NODE.
 

FREENODE FUNCTION

void freenode(NODE x)

USING THE free() FUNCTION DEALLOCATE MEMORY ALLOCATED TO A


PARTICULAR NODE.

PUSH FUNCTION

NODE push(int item,NODE first)  /*Insert front*/

1. CREATE A NEWNODE AND STORE THE INFORMATION IN IT.


2. INSERT THE NODE AT THE FRONT AND MAKE THIS NODE AS THE
NEW FIRST NODE.

POP FUNCTION

NODE pop(NODE first)          

1. CHECK WHETHER THE LIST IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DELETE THE NODE POINTED TO BY FIRSTPOINTER AND
MAKING THE NEXT NODE AS THE NEW FIRST NODE.

 
DISPLAY FUNCTION

void display(NODE first)

1. CHECK WHETHER THE LIST IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY THE CONTENTS OF EACH NODE TIL YOU REACH
THE END OF THE LIST.

Program 11
 
Write a C program using dynamic variables and
pointers to construct a queue of integers using
singly linked list and to perform the following
operations:
a. Insert
b. Delete             
c. Display
The program should print appropriate messages for
queue full and queue empty.
 
 

STRUCTURE OF EACH NODE

struct node

              int Info;

              struct node *link;

};

typedef struct node* NODE;

GETNODE FUNCTION

NODE getnode(void)

USING THE BUILTIN malloc() FUNCTION RETURN A POINTER TO A


CHUNK OF MEMORY WHOSE SIZE IS SAME AS THAT OF THE NODE.

FREENODE FUNCTION

 
void freenode(NODE x)

USING THE free() FUNCTION DEALLOCATE MEMORY ALLOCATED TO A


PARTICULAR NODE.

INSERT_REAR FUNCTION

NODE ins_rear(int item,NODE first)

1. CREATE A NEW NODE POINTED TO BY TEMP STORE THE


INFORMATION IN IT.
2. TRAVERSE THE LIST TO REACH ITS END INSERT THE NEW NODE
AFTER THE LAST NODE IN THE LIST.

DELETE_FRONT FUNCTION

NODE del_front(NODE first)

1. CHECK WHETHER THE LIST IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DELETE THE NODE POINTED TO BY FIRSTPOINTER AND
MAKING THE NEXT NODE AS THE NEW FIRST NODE.

DISPLAY FUNCTION
 

void display(NODE first)

1. CHECK WHETHER THE LIST IS EMPTY.


2. IF YES DISPLAY AN ERROR MESSAGE.
3. ELSE DISPLAY THE CONTENTS OF EACH NODE TIL YOU REACH
THE END OF THE LIST.

Program 12
 
Write a C Program to support the following
operations on a doubly linked list where each node
consists of integers:
a. Create a doubly linked list by adding each node at
the front.
b. Insert a new node to the left of the node whose
key value is read as an input
c. Delete the node of a given data, if it is found,
otherwise display appropriate message.
d. Display the contents of the list.
 
 

STRUCTURE OF EACH NODE

struct node

              int Info;

              struct node *llink;

              struct node *rlink;

};

typedef struct node* NODE;

GLOBAL SECTION

                  llink                                      head

                           
                                                                                      rchild

GETNODE FUNCTION

NODE getnode(void)

USING THE BUILTIN malloc() FUNCTION RETURN A POINTER TO A


CHUNK OF MEMORY WHOSE SIZE IS SAME AS THAT OF THE NODE.

FREENODE FUNCTION

void freenode(NODE x)

USING THE free() FUNCTION DEALLOCATE MEMORY ALLOCATED TO A


PARTICULAR NODE.

INSERT_FRONT FUNCTION

NODE ins_front(int item,NODE head)

1. CREATE A NEWNODE AND STORE THE INFORMATION IN IT.


2. INSERT THE NODE IN BETWEEN THE HEADER NODE AND THE
FIRST NODE.

INSERT_LEFT FUNCTION

NODE ins_left(int item,NODE head)

1. CREATE A NEWNODE AND STORE THE INFORMATION IN IT.


2. TRAVERSE THE LIST TO REACH THE NODE TO WHOSE LEFT THE
NEW NODE HAS TO BE INSERTED.
3. INSERT THE NEW NODE IN BETWEEN THE NODE AND THE
PREVIOUS NODE TO IT.

DELETE_ITEM FUNCTION

NODE del_item(int item,NODE head)

1. OBTAIN THE ELEMENT TO DELETE.


2. SCAN THE LIST TO FIND A NODE CONTAINING A MATCHING
ELEMENT.
3. IF NOT FOUND DISPLAY AN ERROR MESSAGE.
4. ELSE OBTAIN THE ADDRESSES OF NODES PREVIOUS AND AFTER
THE FOUND NODE.
5. ESTABLISH LINK BETWEEN THESE NODES.
6. THEN DELETE THE NODE FOUND.

DISPLAY FUNCTION
 

void display(NODE head)

4. CHECK WHETHER THE LIST IS EMPTY.


5. IF YES DISPLAY AN ERROR MESSAGE.
6. ELSE DISPLAY THE CONTENTS OF EACH NODE TIL YOU REACH
THE END OF THE LIST.

Program 13
 
Write a C Program
a. To construct a binary search tree of integers.
b. To traverse the tree using all the methods i.e.,
inorder, preorder and postorder.
c. To display the elements in the tree.
 
 

STRUCTURE OF EACH NODE

struct node

              int Info;

              struct node *llink;

              struct node *rlink;

};

typedef struct node* NODE;

 
                                                           root

                           

lchild                                          rchild

GETNODE FUNCTION

NODE getnode(void)

USING THE BUILTIN malloc() FUNCTION RETURN A POINTER TO A


CHUNK OF MEMORY WHOSE SIZE IS SAME AS THAT OF THE NODE.

FREENODE FUNCTION

void freenode(NODE x)

 
USING THE free() FUNCTION DEALLOCATE MEMORY ALLOCATED TO A
PARTICULAR NODE.

INSERT_FRONT FUNCTION

NODE insert(int item,NODE root)

1. CREATE A NEWNODE AND STORE THE INFORMATION IN IT.


2. TRAVERSE THE TREE UNTILL YOU FIND THE EXACT POSITION TO
INSERT AS FOLLOWS
a. IF THE NODE TO BE INSERTED IS LESS THAN THE
ENCOUNTERED NODE TRAVERSE TOWARDS THE LEFT
SUBTREE
b. ELSE TRAVERSE TOWARDS THE RIGHT SUBTREE.
c. REPEAT TILL YOU REACH A LEAF NODE
3. THEN INSERT THE NODE AS ITS LEFT CHILD IF IT IS LESSER
OTHERWISE MAKE IT AS THE RIGHT CHILD.

PREORDER TRAVERSAL

void preorder(NODE root)

1. DISPLAY CONTENTS OF THE ROOT NODE.


2. TRAVERSE THE LEFT SUBTREE RECURSIVELY IN PREORDER.
3. TRAVERSE THE RIGHT SUBTREE RECURSIVELY IN PREORDER.

INORDER TRAVERSAL

void inorder(NODE root)

1. TRAVERSE THE LEFT SUBTREE RECURSIVELY IN INORDER.


2. DISPLAY CONTENTS OF THE ROOT NODE.
3. TRAVERSE THE RIGHT SUBTREE RECURSIVELY IN INORDER.

POSTORDER TRAVERSAL

void postorder(NODE root)

1. TRAVERSE THE LEFT SUBTREE RECURSIVELY IN PREORDER.


2. TRAVERSE THE RIGHT SUBTREE RECURSIVELY IN PREORDER.
3. DISPLAY CONTENTS OF THE ROOT NODE.

Program 14 (a)
 
Write recursive C Program for
a. Searching an element on a given list of integers
using the Binary Search method.
 
 

1. INPUT THE ARRAY OF ELEMENTS IN WHICH SEARCH IS TO BE


PERFORMED (assumed to be sorted).
2. INPUT THE KEY ELEMNT TO BE SEARCHED.
3. COMPARE THE KEY ELEMENT WITH THE MIDDLE ELEMENT.
4. IF IT IS EQUAL ELEMENTIS FOUND.
5. ELSE IF KEY ELEMENT IS LESSER THAN THE MIDDLE ELEMENT
RECUSIVELY SEARCH FOR THE KEY ELEMNT IN THE LOWER HALF
OF THE ARRAY.
6. ELSE RECUSIVELY SEARCH FOR THE KEY ELEMNT IN THE UPPER
HALF OF THE ARRAY.
7. REPEAT TILL AN ELEMENT IS FOUND OR THE ARRAY IS
EXHAUSTED.

 
 

Program 14 (b)
 
Write recursive C Program for
b. Solving the Towers of Hanoi problem.
 
 

1. INPUT THE NUMBER OF DISKS SAY N.


2. IF NUMBER OF DISKS IS 1 MOVE IT FROM PEG ‘A’ TO PEG ‘C’.
3. ELSE
a. MOVE RECURSIVELY TOPMOST N-1 DISKS FROM PEG ‘A’ TO
PEG ‘B’ USING PEG ‘C’ AS AUXILARY.
b. MOVE DISK N FROM PEG ’A’ TO PEG ‘C’.
c. MOVE RECURSIVELY TOPMOST N-1 DISKS FROM PEG ‘B’ TO
PEG ‘C’ USING PEG ‘A’ AS AUXILARY.

Anda mungkin juga menyukai