PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs223] testDeque on nonexistent Deque 3
Date: Sunday, 05 Apr 2020, 12:45:38


    > Message Posted By: Unknown
    ...
    > I am still trying to fix my Deque implementation such that it will not
    > crash when "Ia" is called after running testDeque. I have placed print
    > statements to inform me when certain functions are called. I am seeing,
    > however, that isEmptyD being called twice. The first time it is called,
    > the passed in argument is null. The second time it is called, it prints
    > out that the address of d is "0x1." I am not sure why Ia is calling
    > isEmpty D twice and I cannot understand the reason behind the segmentation
    > fault.

When Hwk4/testDeque.c sees an I command, it executes
the following code:

  if (!isalpha(deque = getchar()))
      printf ("%c is not alphabetic\n", deque);
  else if (D[deque] == X && !isEmptyD (NULL))
      printf ("isEmptyD(%c) detected invalid *D\n", deque);
  else if (isEmptyD (&D[deque]))
      printf ("Deque %c is empty\n", deque);
  else
      printf ("Deque %c is not empty\n", deque);

which carry out the following steps;

* If the next character (which specifies the name of
  the Deque) is not an alphabetic, it prints a warning
  message.

* otherwise if no Deque with that name has been created
  and isEmptyD() correctly returns FALSE, it prints a
  message that isEmptyD() detected an invalid Deque.

* Otherwise if isEmptyD() returns TRUE, it prints a
  message that the Deque is empty.

* Otherwise it prints a message that the Deque is not
  empty.

Since your isEmptyD() does not detect an invalid Deque,
it is called twice.

--Stan-
PREV INDEX NEXT