Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2024, 21:33   #1
leksi223
Новичок
Джуниор
 
Регистрация: 14.05.2024
Сообщений: 6
По умолчанию Помогите пожалуйста с решением!

Написать программу на си тестирования структуры данных, Структура данных – дек с ограниченным входом. Программа тестирования должна
включать в себя следующие инструкции:
- добавление элементов в структуру с фиксацией результата (добавление
произошло или нет). Если структура данных – дек, добавление элементов
должно осуществляться с обоих открытых концов;
- извлечение элемента из структуры с фиксацией результата (извлекли или
нет). Если структура данных – дек, извлечение элементов должно
осуществляться с обоих открытых концов;
- проверка пустоты структуры;
- проверка заполненности структуры. Обязательные: добавление элемента в открытый конец, удаление элемента
с открытого конца. Дополнительные: неразрушающее чтение элемента с
открытого конца, проверка заполнения дека, проверка пустоты дека. Есть векторная реализация:
Код:
#include <stdlib.h> 
#include <stdio.h> 
#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 full\n"); 
} 
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]; 
}
leksi223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с решением Ваге1984 Свободное общение 7 03.09.2015 19:59
Помогите, пожалуйста, с решением Ukiro Помощь студентам 1 24.06.2015 08:34
помогите пожалуйста с решением airum Помощь студентам 1 27.05.2009 19:07
Помогите, пожалуйста, с решением Akademik Помощь студентам 2 23.04.2008 23:17