profile
Размещено 6 месяцев назад по предмету Информатика от Golgoglambala

Помогите срочно пожалуйста написать код!!! На си

Написать программу на си тестирования структуры данных, Структура данных – дек с ограниченным входом. Программа тестирования должна
включать в себя следующие инструкции:
- добавление элементов в структуру с фиксацией результата (добавление
произошло или нет). Если структура данных – дек, добавление элементов
должно осуществляться с обоих открытых концов;
- извлечение элемента из структуры с фиксацией результата (извлекли или
нет). Если структура данных – дек, извлечение элементов должно
осуществляться с обоих открытых концов;
- проверка пустоты структуры;
- проверка заполненности структуры. Обязательные: добавление элемента в открытый конец, удаление элемента
с открытого конца. Дополнительные: неразрушающее чтение элемента с
открытого конца, проверка заполнения дека, проверка пустоты дека. Есть векторная реализация:
Код:
#include
#include
#define MAXLENGTH 10
typedef int DataType;

typedef struct Deque
{
int left, right;
DataType data[MAXLENGTH];
} Deque;

void MakeNull (Deque *pDeque);
int Empty (Deque *pDeque);
int Full (Deque *pDeque);
DataType ReadLeft (Deque *pDeque);
DataType ReadRight (Deque *pDeque);
int InRight (DataType x, Deque *pDeque);
DataType OutLeft (Deque *pDeque);
DataType OutRight (Deque *pDeque);

int main()
{
Deque Deque;
int i;
MakeNull(&Deque);
for (i=1; i<=5; i++)
InRight (i, &Deque);
printf("%d ",OutLeft (&Deque));
printf("%d ",OutRight (&Deque));
printf("%d ",OutRight (&Deque));
for (i=1; i<=5; i++)
InRight (i, &Deque);
printf("%d ",OutLeft (&Deque));
printf("%d ",OutLeft (&Deque));
printf("%d ",OutRight (&Deque));
for (i=1; i<=6; i++)
{
if (!Full(&Deque))
InRight (i, &Deque);
else
printf ("Deque is fulln");
}
while (!Empty(&Deque))
printf("%d ",OutLeft (&Deque));
system("pause");
return 0;
}

void MakeNull (Deque *pDeque)
{
pDeque->left = 0;
pDeque->right = MAXLENGTH-1;
}

int Empty(Deque *pDeque)
{
return ( pDeque->right + 1 ) % MAXLENGTH == pDeque->left;
}

int Full(Deque *pDeque)
{
return ( pDeque->right + 2 ) % MAXLENGTH == pDeque->left;
}

int ReadLeft (Deque *pDeque)
{
return pDeque->data[pDeque->left];
}

int ReadRight (Deque *pDeque)
{
return pDeque->data[pDeque->right];
}

int InRight (DataType x, Deque *pDeque)
{
if (Full(pDeque)) return 0;
pDeque->right = ( pDeque->right + 1 ) % MAXLENGTH;
pDeque->data[pDeque->right] = x;
return 1;
}

DataType OutLeft (Deque *pDeque)
{
int temp = pDeque->left;
pDeque->left = (pDeque->left+1)%MAXLENGTH;
return pDeque->data[temp];
}

DataType OutRight (Deque *pDeque)
{
int temp = pDeque->right;
pDeque->right = pDeque->right ? pDeque->right - 1 : MAXLENGTH - 1;
return pDeque->data[temp];
}

  1. Ответ на вопрос
    Ответ на вопрос дан mat65102010

    Объяснение:

    #include <stdio.h>

    #include <stdbool.h>

    #define MAXLENGTH 10

    typedef int DataType;

    typedef struct Deque {

    int left, right;

    DataType data[MAXLENGTH];

    } Deque;

    void MakeNull(Deque *pDeque);

    bool Empty(Deque *pDeque);

    bool Full(Deque *pDeque);

    bool InRight(DataType x, Deque *pDeque);

    DataType OutLeft(Deque *pDeque);

    DataType OutRight(Deque *pDeque);

    int main() {

    Deque Deque;

    int i;

    MakeNull(&Deque);

    for (i = 1; i <= 5; i++) {

    InRight(i, &Deque);

    }

    printf("Element removed from the left side: %dn", OutLeft(&Deque));

    printf("Element removed from the right side: %dn", OutRight(&Deque));

    printf("Element removed from the right side: %dn", OutRight(&Deque));

    for (i = 1; i <= 5; i++) {

    InRight(i, &Deque);

    }

    printf("Element removed from the left side: %dn", OutLeft(&Deque));

    printf("Element removed from the left side: %dn", OutLeft(&Deque));

    printf("Element removed from the right side: %dn", OutRight(&Deque));

    for (i = 1; i <= 6; i++) {

    if (!Full(&Deque)) {

    InRight(i, &Deque);

    printf("Element added: %dn", i);

    } else {

    printf("Deque is fulln");

    }

    }

    printf("Elements in the deque: ");

    while (!Empty(&Deque)) {

    printf("%d ", OutLeft(&Deque));

    }

    printf("n");

    return 0;

    }

    void MakeNull(Deque *pDeque) {

    pDeque->left = 0;

    pDeque->right = MAXLENGTH - 1;

    }

    bool Empty(Deque *pDeque) {

    return (pDeque->right + 1) % MAXLENGTH == pDeque->left;

    }

    bool Full(Deque *pDeque) {

    return (pDeque->right + 2) % MAXLENGTH == pDeque->left;

    }

    bool InRight(DataType x, Deque *pDeque) {

    if (Full(pDeque)) return false;

    pDeque->right = (pDeque->right + 1) % MAXLENGTH;

    pDeque->data[pDeque->right] = x;

    return true;

    }

    DataType OutLeft(Deque *pDeque) {

    int temp = pDeque->left;

    pDeque->left = (pDeque->left + 1) % MAXLENGTH;

    return pDeque->data[temp];

    }

    DataType OutRight(Deque *pDeque) {

    int temp = pDeque->right;

    pDeque->right = pDeque->right ? pDeque->right - 1 : MAXLENGTH - 1;

    return pDeque->data[temp];

    }

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.