Sei sulla pagina 1di 9

SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

IGNOU ASSIGNMENT GURU 2018


Course Code : MCS-021
Course Title : Data and File Structures
Assignment Number : MCA(3)/021/Assignment/2018-19
Maximum Marks : 100 Weightage : 25%
Last Dates for Submission : 15th October, 2018 (for July, 2018 batch)
15th April, 2019 (for January, 2019 batch)
Disclaimer/Special Note: These are just the sample of the Answers/Solutions to some of the Questions given in the Assignments. These Sample Answers/Solutions are prepared by
Private Teacher/Tutors/Authors for the help and guidance of the student to get an idea of how he/she can answer the Questions given the Assignments. We do not claim 100%
accuracy of these sample answers as these are based on the knowledge and capability of Private Teacher/Tutor. Sample answers may be seen as the Guide/Help for the reference
to prepare the answers of the Questions given in the assignment. As these solutions and answers are prepared by the private teacher/tutor so the chances of error or mistake
cannot be denied. Any Omission or Error is highly regretted though every care has been taken while preparing these Sample Answers/Solutions. Please consult your own
Teacher/Tutor before you prepare a Particular Answer and for up-to-date and exact information, data and solution. Student should must read and refer the official study material
provided by the university

Question 1: Write an algorithm that accepts a Binary Tree as input and prints its
height to standard output (20 Marks)
Answer 1: PROCEDURE CONVERT

Given a forest of trees, it is required to convert this forest into an equivalent binary tree with a list
head (HEAD)

1.[Initialize]

HEAD <-- NODE

LPTR(HEAD) <-- NULL

RPTR(HEAD) <-- HEAD

LEVEL[1] <-- 0

LOCATION TOP <-- 1.

2.[Process the input]

Repeat thru step 6 while input is there.

3.[Input a node]
1
IGNOU ASSIGNMENT GURU Page-

Read(LEVEL,INFO).

4.[Create a tree node]

NEW <-- NODE

LPTR(NEW) <-- RPTR(NEW) <-- NULL

DATA(NEW) <-- INFO.

5.[Compare levels]

PRED_LEVEL <-- LEVEL[TOP]

PRED_LOC <-- LOCATION[TOP]

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

if LEVEL > PRED_LEVEL

then LPTR(PRED_LOC) <-- NEW

else if LEVEL = PRED_LEVEL

RPTR(PRED_LOC) <-- NEW

TOP <-- TOP – 1

else

Repeat while LEVEL != PRED_LEVEL

TOP <-- TOP – 1

PRED_LEVEL <-- LEVEL[TOP]

PRED_LOC <-- LOCATION[TOP]

if PRED_LEVEL <-- LEVEL

then write (“Invalid Input”)

return

RPTR(PRED_LOC) <-- NEW

TOP <-- TOP – 1.

6.[Pushing values in stack]

TOP <-- TOP + 1

LEVEL[TOP] <-- LEVEL

LOCATION[TOP] <-- NEW.

7.[FINISH]

return.

Question 2: Write an algorithm for the implementation of a B tree. 2


IGNOU ASSIGNMENT GURU Page-
Answer 2: Insertion
1) Initialize x as root.
2) While x is not leaf, do following
..a) Find the child of x that is going to to be traversed next. Let the child be y.
..b) If y is not full, change x to point to y.
..c) If y is full, split it and change x to point to one of the two parts of y. If k is smaller than
mid key in y, then set x as first part of y. Else second part of y. When we split y, we move
a key from y to its parent x.
3) The loop in step 2 stops when x is leaf. x must have space for 1 extra key as we have
been splitting all nodes in advance. So simply insert k to x.

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

struct btree
{
int data;
struct btree *left;
struct btree *right;
};
void add(struct btree **q,int n)
{
struct btree *t,*temp;
t=malloc(sizeof(struct btree));
t->data=n;
t->left=NULL;
t->right=NULL;
if(*q==NULL)
*q=t;
else
{
temp=*q;
while(temp->left!=NULL && temp->right!=NULL)
{
if(temp->data<=n)
temp=temp->right;
else
temp=temp->left;
}
if(temp->data<=n)
temp->right=t;
else
temp->left=t;
}
}
inorder(struct btree *s)
{
if(s!=NULL) 3
IGNOU ASSIGNMENT GURU Page-
{
inorder(s->left);
printf(" >%d",s->data);
inorder(s->right);
}
return;
}
preorder(struct btree *s)
{
if(s!=NULL)
{
printf(" >%d",s->data);
inorder(s->left);

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

inorder(s->right);
}
return;
}
postorder(struct btree *s)
{
if(s!=NULL)
{
inorder(s->left);
inorder(s->right);
printf(" >%d",s->data);
}
return;
}
main()
{
struct btree *p;
p=NULL;
clrscr();
add (&p,10);
add(&p,5);
add(&p,60);
add(&p,70);
printf("\n\nin-order=\n");
inorder(p);
printf("\n\npre-order=\n");
preorder(p);
printf("\n\npost-order=\n");
postorder(p);
getch();
}

4
IGNOU ASSIGNMENT GURU Page-
Question 3: Write a note of not more than 5 pages summarizing the latest
research in the area of “Searching Techniques”. Refer to various journals and
other online resources. Indicate them in your assignment.
Answer 3: The logic behind database searches
Searching in a database is matching your search words with existing words in the database. You enter
one or several search words and the database will tell you whether these words can be found in the
database. Most search tools automatically imply AND between each word entered. If you enter two
words you will only get the results that include both words together in the same document.
There are search services that automatically search for related terms and synonyms. That kind of
searches will yield a greater amount of hits.

Illustration of matching using two terms


What happens when you execute the search in the example is that you ask the database to return

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

documents where the words politics AND democracy are included - no other documents. Had the
search been executed using only the word politics, the upper left document had been returned by the
database.
In many databases you can also use OR between the search words. Applying this to the example
below, we would obtain documents that either include bribes OR corruption. The operator OR is used
when you want to increase the number of hits, and it is very useful if you want to search for all kinds
of synonyms.

Illustration of search with the OR operator


Include different word endings with truncation
Besides choosing which words to search for, you also have to think about in which form you write
them. If you, for instance, want to find publications about democratisation studies, you might also be
interested in publications wherein such words as democratization with American English spelling, or
any ending of the word, like democracies (plural form), or democratic (as in democratic parties) occur.
Instead of doing several separate searches, you can use a so-called truncation. Enter the stem of the
word and a truncation character, like democra*, and you will retrieve all publications wherein the
truncated word stem occurs, irrespective of which ending it has.

Illustration of search with truncation.


In many databases the truncation character can also be used at the beginning or in the middle of a
word. When it is used in the middle of the word it is usually called a wildcard.
The most common truncation character is the asterisk (*), but other characters might occur, such as
the question mark (?). Sometimes, different characters are used depending on whether it is used
inside or at the ending of the word. Read the search help text of the database you are currently
searching in.
It might be good to know that Google uses a form of automatic truncation. A search might retrieve hits
on other variants of the word used in your search. However, in the library's article databases, for
instance, you usually have to truncate words in order to retrieve all variants.
Free text search and metadata search
Which search words you choose is crucial, but you should also be aware of what information you are
searching in. Are you searching in the whole document text or only among titles, authors, or other
metadata that describes the documents?
Searching in the whole text of documents is usually called free text search, or full text search. A typical
example of this is Google. When you are searching in the whole text, you can use specified words that
occur in the text. 5
IGNOU ASSIGNMENT GURU Page-
However, if you are searching, using only the metadata that describes the document, you cannot be as
specific.
Phrase search
By putting two or more words withing quotation marks, you will only retrieve documents wherein the
those words are in exactly that order. This technique works in most databases and search engines.
Example: "third world".
Field search
In most databases you will find advanced search options where you can specify in which field you want
to limit your search to. In the example to the right, you will only retrieve documents where the words
economic development occurs in titles.

Delimiters
In some cases you need to limit your search result, usually when the search has yielded lots of hits
with a great variety of relevance. This is often the case when the database is of a general and

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

multidisciplinary character and covers many different subject areas and publication types.
In contrast to metadata searching, this is something you do after the initial search. In the interfaces of
today's databases you will be usually be offered a set of delimiters that you can use to limit your
search.
Publication type
For example, searching only for journals or dissertations.
Publication date
For example, limiting your search to find only material within the latest three years.
Subject area
In some cases you can choose among a number of subject areas. The example below is from the
database Science Direct.
Managing search lists
Pay attention to how search results are presented. Relevancy means that the database automatically
weight which documents are relevant based on your search qriteria. In scientific databases the default
setting is usually by date, but this option is one that can be easily changed to relevancy instead.
linearly search
// C++ code for linearly search x in arr[]. If x
// is present then return its location, otherwise
// return -1
int search(int arr[], int n, int x)
{
int i;
for (i = 0; i < n; i++)
if (arr[i] == x)
return i;
return -1;
}

Question 4: Write an algorithm for the implementation of a Circularly


Doubly Linked List. (20 Marks)
Answer 4 :
Circular Doubly Linked List has properties of both doubly linked list and circular linked list
in which two consecutive elements are linked or connected by previous and next pointer
and the last node points to first node by next pointer and also the first node points to last
node by previous pointer. 6
IGNOU ASSIGNMENT GURU Page-
// C++ program to illustrate inserting a Node in
// a Cicular Doubly Linked list in begging, end
// and middle
#include <bits/stdc++.h>
using namespace std;

// Structure of a Node
struct Node
{
int data;
struct Node *next;
struct Node *prev;
};

// Function to insert at the end


void insertEnd(struct Node** start, int value)
{

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

// If the list is empty, create a single node


// circular and doubly list
if (*start == NULL)
{
struct Node* new_node = new Node;
new_node->data = value;
new_node->next = new_node->prev = new_node;
*start = new_node;
return;
}

// If list is not empty

/* Find last node */


Node *last = (*start)->prev;

// Create Node dynamically


struct Node* new_node = new Node;
new_node->data = value;

// Start is going to be next of new_node


new_node->next = *start;

// Make new node previous of start


(*start)->prev = new_node;

// Make last preivous of new node


new_node->prev = last;

// Make new node next of old last


last->next = new_node;
}

// Function to insert Node at the beginning


// of the List,
void insertBegin(struct Node** start, int value)
{
// Pointer points to last Node
struct Node *last = (*start)->prev;

struct Node* new_node = new Node;


new_node->data = value; // Inserting the data

// setting up previous and next of new node


7
IGNOU ASSIGNMENT GURU Page-
new_node->next = *start;
new_node->prev = last;

// Update next and previous pointers of start


// and last.
last->next = (*start)->prev = new_node;

// Update start pointer


*start = new_node;
}

// Function to insert node with value as value1.


// The new node is inserted after the node with
// with value2
void insertAfter(struct Node** start, int value1,
int value2)

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

{
struct Node* new_node = new Node;
new_node->data = value1; // Inserting the data

// Find node having value2 and next node of it


struct Node *temp = *start;
while (temp->data != value2)
temp = temp->next;
struct Node *next = temp->next;

// insert new_node between temp and next.


temp->next = new_node;
new_node->prev = temp;
new_node->next = next;
next->prev = new_node;
}

void display(struct Node* start)


{
struct Node *temp = start;

printf("\nTraversal in forward direction \n");


while (temp->next != start)
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("%d ", temp->data);

printf("\nTraversal in reverse direction \n");


Node *last = start->prev;
temp = last;
while (temp->prev != last)
{
printf("%d ", temp->data);
temp = temp->prev;
}
printf("%d ", temp->data);
}

/* Driver program to test above functions*/


int main()
{
8
IGNOU ASSIGNMENT GURU Page-
/* Start with the empty list */
struct Node* start = NULL;

// Insert 5. So linked list becomes 5->NULL


insertEnd(&start, 5);

// Insert 4 at the beginning. So linked


// list becomes 4->5
insertBegin(&start, 4);

// Insert 7 at the end. So linked list


// becomes 4->5->7
insertEnd(&start, 7);

// Insert 8 at the end. So linked list


// becomes 4->5->7->8

/IGNOUASSIGNMENTGURU
SOLVED ASSIGNMENTS

http://www.ignouassignmentguru.com

insertEnd(&start, 8);

// Insert 6, after 5. So linked list


// becomes 4->5->6->7->8
insertAfter(&start, 6, 5);

printf("Created circular doubly linked list is: ");


display(start);

return 0;
}

https://www.facebook.com/IGNOUAssignmentGURU

https://twitter.com/iampawan005

https://in.linkedin.com/in/iamPawanVishwakarma

https://www.instagram.com/IGNOUAssignmentGURU/

https://www.youtube.com/channel/UC_h1JtEEoLzAXHYFp7awbaA
9
IGNOU ASSIGNMENT GURU Page-

HELP US TO SERVE YOU BETTER


Make A Donation PAYTM
+919811854308
http://bit.ly/ignouassignmentgurupay

/IGNOUASSIGNMENTGURU