Description
Q1.) Given a input file containing the characters ‘(‘, ‘)’, ‘{‘, ‘}’ , ‘[‘ , ‘]’ , and several other, read the input file (input.txt)
and determine if the input file is having valid Parentheses or not. (40 points)
(Note: read file name using command line argument )
An input file is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Example 1:
Input: |
Output: |
Input file is valid |
|
#include<stdio.h> |
|
Int main( ) |
Explaination: |
{ |
As the input file contains parantheses in correct order |
int a[2]; |
|
and opening and closing of brackets are same :<> ( ){ {} } |
|
for(int i=0;i<2;i++) |
|
{ |
|
a[i] = i; |
|
} |
|
return 0; |
|
} |
|
Example 2: |
|
Input file: |
Output: |
class S |
Input file is invalid |
{ |
Explaination: |
public: |
|
int reverse(int x // ‘)’ is missing |
It is invalid because at line no. 4 ‘)’ do not have the same |
{ |
closing bracket and at line 20 do not have same closing |
int y=0; |
|
int a[10]; |
bracket for ‘{ ‘ at line 9. |
while(x) |
|
{ |
|
if(y>INT_MAX/10 || y<INT_MIN/10) |
|
{ |
|
return 0; |
|
} |
|
else |
|
{ |
|
y=y*10 +x%10; |
|
x=x/10; |
|
} |
|
) |
|
return y; |
|
} |
|
}; |
Q2.)Implement set using link list, you have to perform all the below task through function call. The tasks are –(60 points)
1.int makeSet(struct Set *SetA), [To make a head of the link list]
-
int insert (struct Set *SetA, int value), [To insert value ‘d’ in set ‘S’ , if not exist] (8 points)
-
int delete (struct Set *SetA, int value), [To delete value ‘d’ from set ‘S’ if it exists ] (8 points)
-
int printSet (struct Set *SetA), [To print the values of set] (6 points)
-
int Union (struct Set *SetA, struct Set *SetB, struct Set *SetC), [To perform union between two sets S1, S2 and return another set](10 points)
-
int intersection (struct Set *SetA, struct Set *SetB, struct Set *SetC), [To perform intersection between two sets S1,
S2 and return another set] (10 points)
-
int difference(struct Set *SetA, struct Set *SetB, struct Set *SetC), [to perform set difference S1 – S2 and] (10 points)
-
int deleteSet (struct Set *SetA), [To perform delete a set] (8 points)
Note:- Return 1 for successfully call the function, otherwise 0.
Partial code:-
#include<stdio.h>
struct Set
{
int value;
struct Set* next;
};
int makeSet(struct Set *SetA){
//Write your code
}
int insert (struct Set *SetA, int value){ // insert value in the SetA if it is not exist and return 1, otherwise return 0
//Write your code
}
int delete (struct Set *SetA, int value){ // delete value from SetA if it is exist and return 1, otherwise return 0,
//Write your code
int printSet (struct Set *SetA){ //Print all the element of the SetA, where SetA is headpointer of link list
//Write your code
}
int Union (struct Set *SetA, struct Set *SetB, struct Set *SetC){ // To perform union between two sets SetA, SatB and //store the result in SetC, , where SetA,SetB,SetC is the head pointer of the link list
//Write your code
}
int intersection (struct Set *SetA, struct Set *SetB){ // To perform intersection between two sets SetA, SatB and //store the result in SetC, , where SetA,SetB,SetC is the head pointer of the link list
//Write your code
}
int difference(struct Set *SetB, struct Set *SetB// To perform difference between two sets SetA, SatB and store the //result in SetC, where SetA,SetB,SetC is the head pointer of the link list
//Write your code
}
int deleteSet(struct Set *SetA){ //Take headpointer of link list SetA and delete all the node from heap.
//Write your code
}
int main(){
// Read text file
//Call accordingly each function
//For each line, first number represent the operation, and remaining are parameter
}