Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ копирование http://www.cyberforum.ru/cpp-beginners/thread303442.html
господа програмисты как скопировать информацию из одного .txt в другой? Если можно посмотреть не большой,примитивный исходник. Заранее всем большое спасибо!!!
C++ удаление средней буквы помогите пожалуйста составить программу, ПЛЗ:cry: Условие:Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами- запятая, за последним словом- точка. Напечатать все слова последовательности, которые отличены от последнего слова, предварительно преобразовав каждое из них по следующему правилу: если слово нечетной... http://www.cyberforum.ru/cpp-beginners/thread303436.html
C++ Шаблон класса. Помогите описать бинарный минус
Помогите описать бинарный минус Код: #include <iostream> #include <math.h> using namespace std; template <class ku> class kvur {
Удалить белые вершины в дереве C++
Помогите, пожалуйста. У меня такая задача: Дерево белых и черных вершин. Надо удалить белые вершины, находящиеся на последнем и предпоследнем уровнях. Спасибо.
C++ очередь http://www.cyberforum.ru/cpp-beginners/thread303411.html
подскажите как реализовать на чистом Си С введенных целых чисел сформировать два списка типа очередь с одинаковым количеством элементов. Разработать функцию, которая объединяет две очереди в одну из попарно взятыми элементами начальных очередей (начиная с первого элемента первой очереди). Функция передает в основную программу адреса начала и конца полученной очереди.
C++ сумма произведений двух рядов разной Подскажите, пожалуйста, где ошибка.. Никак не могу понять, что не так.. В массивах x1 и x2 содержатся ряды разных размеров, размерность x1 = 2*n, размерность x2 = 6*n. Конечный массив содержит (4*n+1) элемент, каждый из которых вычисляется следующим способом: массив x1 умножается на соответствующие элементы массива x2 (т.е. x1(0)*x2(0)+...+x1(n)*x2(n) ) - это первое значение искомого массива,... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
 
Текущее время: 15:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru