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

Циклический двусвязный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление значения логического выражения http://www.cyberforum.ru/cpp-beginners/thread812990.html
Дорогие друзья, помогите написать программу, не могу понять как и даже с чего начать. Можете дать, пожалуйста, код и написать в комментариях что к чему, буду очень благодарен!!! А вот собственно говоря задание: Написать программу на языке C++ вычисления значения логического выражения, состоящего из натуральных чисел, скобок и поразрядных операций ‘–’ (“не”), ‘&’ (“и”), ‘|’ (“или”). Приоритет у...
C++ Операции над однонаправленным списком В лабораторній роботі необхідно організувати однонапрямлений список із структурою взятої із лабораторної роботи №1 згідно з варіантом та передбачити наступні дії : • додавання елементів до списку; • вилучення елементів зі списку; • додавання елементів у кінець списку; • пошук за заданим полем; • друк списку. ______________________________________________________ В лабораторной работе... http://www.cyberforum.ru/cpp-beginners/thread812965.html
C++ Для заданной вершины p найти маршруты в другие города, хотя бы один маршрут для каждого города
Добрый день мои дорогие и многоуважаемые форумчане. Прошу вашей помощи: Вот дали задание в университете: Для заданной вершины p найти маршруты в другие города, хотя бы один маршрут для каждого города. Что то нарыл, но не то вовсе. Помогите. пожалуйста кто может. Вот код который был дан в виде исходника: #include <stdio.h> #include <conio.h> int a = { 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,...
Ошибка в коде C++
Помогите, пожалуйста! Написала код программы на С++ и нажала отладку, а он мне выдает ошибку "Не удается запустить программу C:\...\Ann.exe . Не удается найти указанный файл" И так на любой версии студио!Что делать не знаю!Помогите, пожалуйста! Код: #include "stdlib.h" #include "stdafx.h" #include "studio.h" #include "time.h" #include "windows.h"
C++ Двумерные массивы. Написать функцию, которая меняет значения диагональных элементов http://www.cyberforum.ru/cpp-beginners/thread812952.html
уважаемые программисты прошу помочь с программой на двумерный массив т.к. я не в силах это сделать!!! нужно создать функцию к этой программе: #include<iostream.h> #include<math.h> void main() { int i,j,c; int a; for(i = 0; i < 3; i++) {
C++ Программа, сравнивающая 2 текстовых файла ребята, прошу помочь разобраться с программой на чистом СИ. В 1 файле текст, во 2 некоторые слова, встречающиеся в тексте из первого файла. Нужно сравнить эти файлы и удалить слова из 2-ого файла в первом. Одно замечание, на вход могут подаваться файлы абсолютно любого размера, т.е нужно выделять динамическую память, но выяснилось, что я не могу написать эту программку даже со статическими... подробнее

Показать сообщение отдельно
anmartex
...
1703 / 1196 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
20.03.2013, 09:31
Цитата Сообщение от Eliceyka Посмотреть сообщение
... можете хотя бы общий вид комментариев подписать
Можно
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <cstdlib>
#include <ctime>
 
struct TPoint
{
   int x, y;
 
   TPoint(): x(0), y(0) { ; }
   TPoint(int theX, int theY): x(theX), y(theY) { ; }
};
 
struct TNode
{
   TPoint point;
   TNode* next;
   TNode* prev;
};
 
//----------------------------------------------//
// Добавление элемента в список. Добавление происходит в
// начало списка, а не в конец, хотя исправить - минутное дело
// Параметры: list -  сам список
//            point - данные для добавления
TNode* Push(TNode*& list, const TPoint& point)
{
   // Создаём новый узел
   TNode* node = new TNode;
   node->point = point;
 
   // В случае пустого списка просто закольцовываем
   // на себя
   if (list == NULL)
   {
      node->next = node->prev = node;
   }
   // В случае не пустого списка, вставляем созданный
   // элемент в начало списка
   else
   {
      // Сначала расставляем указатели в созданном элементе
      node->next = list;
      node->prev = list->prev;
      // А теперь скрепляем с имеющимся
      list->prev = node;
      node->prev->next = node;
   }
 
   list = node;
 
   return list;
}
//----------------------------------------------//
// Удаление элемента из списка
// Параметры:  list -  сам список
// Возвращает: значение удалённого узла
TPoint Pop(TNode*& list)
{
   // Если список пуст, то закрываем лавочку
   if (list == NULL)
   {
      return TPoint();
   }
 
   // Сохраняем значение текущего узла, ибо он
   // сейчас будет удалён
   TPoint val(list->point);
   TNode* node = list;
 
   // В случае если в списке был всего один элемент,
   // то просто зануляем наш список
   if ((list->next == list) || (list->prev == list))
   {
      list = NULL;
   }
   // Иначе перебиваем указатели буз учёта
   // удаляемого элемента.
   else
   {
      list->prev->next = list->next;
      list->next->prev = list->prev;
      list = list->next;
   }
   // Удаляем отцепленный узел
   delete node;
 
   return val;
}
//----------------------------------------------//
// Перегрузка оператора вывода для структуры TPoint
// P.S.: Себя капитаном очевидностью чувствую :(
std::ostream& operator << (std::ostream& os, const TPoint& point)
{
   os << "[" << point.x << "," << point.y << "]";
 
   return os;
}
//----------------------------------------------//
// Перегрузка для списка (struct TNode*)
std::ostream& operator << (std::ostream& os, const TNode* node)
{
   if (node)
   {
      const TNode* cursor = node;
 
      for (; cursor->next != node; cursor = cursor->next)
      {
         os << cursor->point << " ";
      }
      os << cursor->point;
   }
   else
   {
      os << "nil";
   }
 
   return os;
}
//----------------------------------------------//
 
int main()
{
   srand(time(NULL));
 
   TNode* list = NULL;
 
   // Случайным образом задаём 5 точек и добавляем их в список
   // После чего сразу же выводим (и саму точку и список)
   for (int i = 0; i < 5; ++i)
   {
      TPoint point(rand()%100 - 50, rand()%100 - 50);
      Push(list, point);
      std::cout << "addition: " << point << std::endl;
      std::cout << "list: " << list << std::endl;
   }
 
   // Пока в списке есть хоть один элемент
   // удаляем верхний элемент в списке и выводим результат
   while (list)
   {
      std::cout << "deleted: " << Pop(list) << std::endl;
      std::cout << "list: "  << list << std::endl;
   }
 
   system("pause");
 
   return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru