Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220

Динамические структуры данных. Дек

24.05.2011, 12:19. Показов 5593. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята помогите, горит степуха!
Динамически разработать и реализовать на языке С следующие функции работой с Деком:
1. Создание пустого Дека.
2. Добавление элемента в Дек.(в начало- в конец)
3. Удаление элемента из Дека.(из начала- из конца)
4. Вывод Дека на экран монитора.
Помогите плиз! Всем заранее спасибо!!

Добавлено через 2 часа 50 минут
Помогите кто нибууудь!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2011, 12:19
Ответы с готовыми решениями:

Динамические информационные структуры данных. (Дек)
Разработать и реализовать на языке С следующие функции работой с деком: 1. Создание пустого дека. 2. Добавление элемента в дек. ...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё.
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Динамические структуры данных
Выполнить задания 3 способами: с использованием стека, очереди, дека. Описание соответствующих типов и набор всех необходимых для их...

4
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
24.05.2011, 16:32
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdio.h>
#include <stdlib.h>
 
typedef int ValueType;
 
typedef struct Node {
  ValueType value;
  struct Node *prev;
  struct Node *next;
} Node;
 
typedef struct {
  Node *start;
  Node *end;
  size_t size;
} Deque;
 
Deque *DequeNew(Deque *deque) {
  deque->start = NULL;
  deque->end = NULL;
  deque->size = 0;
  return deque;
}
 
Deque *DequeDelete(Deque *deque) {
  while (deque->start != NULL) {
    Node *next = deque->start->next;
    free(deque->start);
    deque->start = next;
  }
  deque->start = deque->end = NULL;
  deque->size = 0;
  return deque;
}
 
void DequePushBack(Deque *deque, ValueType value) {
  Node *node = (Node*)malloc(sizeof(Node));
  node->value = value;
  node->next = node->prev = NULL;
  if (deque->start == NULL) {
    deque->end = deque->start = node;
  } else {
    deque->end->next = node;
    node->prev = deque->end;
    deque->end = node;
  }
  ++deque->size;
}
 
ValueType DequePopBack(Deque *deque) {
  ValueType result = deque->end->value;
  Node *prev = deque->end->prev;
  free(deque->end);
  deque->end = prev;
  if (deque->end == NULL)
    deque->start = deque->end;
  else
    deque->end->next = NULL;
  --deque->size;
  return result;
}
 
void DequePushHead(Deque *deque, ValueType value) {
  Node *node = (Node*)malloc(sizeof(Node));
  node->value = value;
  node->next = node->prev = NULL;
  if (deque->start == NULL) {
    deque->end = deque->start = node;
  } else {
    deque->start->prev = node;
    node->next = deque->start;
    deque->start = node;
  }
  ++deque->size;
}
 
ValueType DequePopHead(Deque *deque) {
  ValueType result = deque->start->value;
  Node *next = deque->start->next;
  free(deque->start);
  deque->start = next;
  if (deque->start == NULL)
    deque->end = deque->start;
  else
    deque->start->prev = NULL;
  --deque->size;
  return result;
}
 
ValueType DequeHead(Deque *deque) {
  return deque->start->value;
}
 
ValueType DequeBack(Deque *deque) {
  return deque->end->value;
}
 
Deque *DequePrint(Deque *deque, const char *format_string,
                                const char *last_string) {
  Node *node;
  for (node = deque->start; node != NULL; node = node->next)
    printf(format_string, node->value);
  printf(last_string);
  return deque;
}
 
int main(int argc, char **argv) {
  Deque deque;
  DequeNew(&deque); // que = NULL
  DequePushHead(&deque, 2); // que = 2
  DequePushHead(&deque, 3); // que = 3, 2
  DequePushBack(&deque, 1); // que = 3, 2, 1
  DequePrint(&deque, "%4d", "\n"); // prints  3  2  1
  printf("%4d\n", DequeBack(&deque)); // 1
  printf("%4d\n", DequeHead(&deque)); // 3
  printf("%4d\n", DequePopHead(&deque)); // 3, que = 2, 1
  printf("%4d\n", DequePopBack(&deque)); // 1, que = 2
  DequeDelete(&deque);
  return 0;
}
1
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
24.05.2011, 18:57  [ТС]
lemegeton вы не могли бы прокоментировать ваш код? хотя бы общие моменты...

Добавлено через 22 минуты
Особенно сильно непонятно в этом куске кода:
Цитата Сообщение от lemegeton Посмотреть сообщение
ValueType DequeHead(Deque *deque) { return deque->start->value; }

ValueType DequeBack(Deque *deque) { return deque->end->value; }

Deque *DequePrint(Deque *deque, const char *format_string, const char *last_string) { Node *node; for (node = deque->start; node != NULL; node = node->next) printf(format_string, node->value); printf(last_string); return deque;
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
24.05.2011, 19:20
Цитата Сообщение от Mogul-kan Посмотреть сообщение
lemegeton вы не могли бы прокоментировать ваш код? хотя бы общие моменты...
К сожалению, я слишком ленив, чтобы комментировать столь простой код. Вообще, я даю идентификаторам весьма говорящие имена, да и в каждой функции всего строк по десять... К тому же функции push и pop попарно схожи. Так что разберетесь, я верю. Ну или не разберетесь, но тогда даже мои комментарии не помогли бы.

C
1
2
ValueType DequeHead(Deque *deque) { return deque->start->value; }
ValueType DequeBack(Deque *deque) { return deque->end->value; }
Функции возвращают значения из головы и хвоста дека соответственно. Нужны для того, чтобы получать эти значения, не убирая их из дека функциями DequePopHead или DequePopback.
C
1
2
3
4
5
6
7
Deque *DequePrint(Deque *deque, const char *format_string, const char *last_string) {
  Node *node;
  for (node = deque->start; node != NULL; node = node->next)
    printf(format_string, node->value);
  printf(last_string);
  return deque;
}
Функция выводит содержимое дека на печать. Принимает в параметры дек, строку, с помощью которой будет отформатирован вывод (первый параметр для printf) и строку, которая будет напечатана после вывода всех элементов дека (например, перевод каретки или "thats it, folks!").
Функция работает с деком, как со списком, последовательно получая элементы контейнера и выводя их на печать.
1
тин
11.05.2012, 00:52
отображение на массиве?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2012, 00:52
Помогаю со студенческими работами здесь

Динамические структуры данных
Создать линейный односвязный список. Заменить последний элемент на другой, вводимый с клавиатуры. Удалить предпоследний элемент и добавить...

C++ динамические структуры данных
подскажите хороший ресурс где можно почитать инфу про динамические структуры данных. Нужно понять как реализовать односвязный,двусвязный и...

Динамические структуры данных
Здравствуйте! Помогите, с заданием, я не понял, как написать код правильный. 1. Однонаправленный список. Тип информационного поля...

Динамические структуры данных
Доброе утро всем. Возникли вопросы по динамическим структурам. Вот на примере задания кто может объяснить ? Лучше конечно решением этого...

Динамические структуры данных
(можно с пояснением,что-то не понимаю) Есть строка символов, признаком конца которой является ;. В строке могут быть фигурные, круглые,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru