0% found this document useful (0 votes)
24 views7 pages

Key MT 2223 1

The document is a computer engineering midterm exam containing 7 pages with 3 parts testing knowledge of: 1) C programming language concepts including operators, functions, and arrays. 2) Data structures including queues, stacks, and binary search trees. 3) Implementing basic data structures like queues, stacks, and binary search algorithms in C code.

Uploaded by

farhan khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views7 pages

Key MT 2223 1

The document is a computer engineering midterm exam containing 7 pages with 3 parts testing knowledge of: 1) C programming language concepts including operators, functions, and arrays. 2) Data structures including queues, stacks, and binary search trees. 3) Implementing basic data structures like queues, stacks, and binary search algorithms in C code.

Uploaded by

farhan khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 7

EASTERN MEDITERRANEAN UNIVERSITY

Computer Engineering Department

CMPE-231 DATA STRUCTURES


MIDTERM EXAMINATION
1 December 2022
Duration: 80 minutes

Name, Surname . SOLUTION KEY. . . . . . . . .

Student ID # . . . . . . . . . .

Grading:

PI. /40
Please, check your exam sheet and make sure that it
contains 7 pages. In case of any missing pages, inform the PII. /30
invigilator IMMEDIATELY !
PIII. /30

If an Answer Box is provided in a question, you MUST Total /100


give your answer (and nothing else) in the
corresponding box. Otherwise, you will get NO MARKS
from that question
C programming language: Operators

OPERATORS ASSOCIATIVITY

() [] -> . Left to right

! ++ -- + - * & (type) sizeof Right to left (Unary)

* / % Left to right

+ - Left to right

< <= > >= Left to right

== != Left to right

&& Left to right

|| Left to right

?: Right to left

= += -= *= /= %= Right to left

, Left to right
PART I) (40 points)

1- Consider the C function

int fun(int x)
{
if (x < 5) return (3 * x);
else return(2 *fun(x - 5) + 4);
}

What would be returned if the function is called as fun(16) ?

- 52
2- Give the output of the below C code.

int x = 0;
void fun_1(int n)
{
printf("%d ", n);
if(n > 0) fun_1(n - 2);
printf("%d ", ++x);
return;
}

main()
{
fun_1(6);
}

64201234

3- Give the output of the below C code.

char c[] = "COMPUTER";


struct uuu
{
int value;
char *ptr;
}q;
struct uuu *p = &q;

main()
{
p -> value = 7;
p -> ptr = c+3;
printf("%d\n", --p->value);
printf("%c", p->ptr[-1]);
printf("%c", ++(*(p->ptr)));
p -> ptr += 3;
6
printf("%c\n", *p->ptr); MQE
}

4- Give the output of the below C code.

main()
{
void f(int(*)[2]);

int j,k;

int q[4][2]={1, 2, 3, 4, 5, 6, 7, 8};

f(q+1);

for(j=0; j<4; j++)


for(k=0; k<2; k++) printf("%d ", q[j][k]);
}

void f(int (*v)[2])


{
int j,k;

for(j=0; j<4; j++)


for(k=0; k<2; k++) v[j][k] = 2*j + k;
11 2 0 1 2 3 4 5
v--; *v[0] = 11;
}
PART II) (30 points)

1- Consider the array implementation of the circular queue q defined by the following code:
#define MAXQUEUE 4
struct queue
{
char items[MAXQUEUE];
int front, rear;
} q;
Assume that q.items contains the items ‘A’ and ‘B’ as follows at a given instant:

0 1 2 3
A B

where ‘A’ is at the front.

a) Show the contents of the queue and the values of q.front and q.rear after the sequence of
following operations:

1.) Insert ‘D’ to the queue that already contains items ‘A’ and ‘B’ as above.
2.) Remove an item.
3.) Insert ‘C’.

Your answer:

0 1 2 3

C B D

1 0
q.front = ___ ______ q.rear = ____ ______

b) How many items can the queue contain at most?

2- Consider the below infix expressions. How many items, at most, will the stack contain
when the infix-to-postfix conversion algorithm is applied to each expression?

a) D$(A-(B+C))$E 5 b) ( A*B+C)$F 2
3- Consider the below infix expressions. How many items, at most, will the stack contain
when the infix-to-postfix conversion algorithm is applied to each expression?

a) A$B$C*D 2 b) a/b$c$d/f 3

PART III) (30 points)

1- The following code implements the removal of an item from a circular queue. However,
some parts of the code are missing (indicated by __________). Complete the missing parts.

#define MAXQUEUE 10000


struct queue
{
int items[MAXQUEUE];
int front, rear;
};

int empty(struct queue *pq)


{
return _______ pq -> front == pq -> rear ______? 1: 0;
}
//Removal of an item
//The value of the removed item is returned !!!
int remove(struct queue *pq)
{
if(empty(pq)
{
printf(“queue underflow\n”); exit(1);
}

if(pq -> front == MAXQUEUE - 1) return pq -> items[__ pq -> front = 0 __];

else return pq -> items[__ ++pq -> front ____];


}
2- The following code describes a recursive C function for the binary search algorithm.
However, some parts of the code given below are missing. Fill in those missing parts
indicated by _______ .

int binsrch(int *a, int x, int low, int high) {


int mid;
if(low > high) return -1;
mid = (low + high)/2;
if(x == a[mid]) return mid;

else if(x < a[mid]) return ___ binsrch(a, x, low, mid-1) _______________;

else return ____ binsrch(a, x, mid+1, high) _______________;


}
Note that the function searches the item x within the range a[low] to a[high].
3- The following code implements basic stack operations. However, some parts of the code are
left incomplete (indicated by __________). Fill in the incomplete parts.

struct stack
{
int array[100];
int top;
};

int empty(struct stack *ps)


{
if(ps -> top == -1) return 1; //empty stack
else return 0;
}

int pop(struct stack *ps)


{
if(empty(ps)) { printf("Stack underflow"); exit(1); }

return ___ps -> array[ps -> top--]________________;


}

void push(struct stack *ps, int x)


{
___ ps -> array[++ps -> top] _______ = x;
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy