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

Циклический список. Решение задачи - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерные массивы. Поиск максимума, удаление. http://www.cyberforum.ru/cpp-beginners/thread706072.html
Задано 2 целочисленных массива X(n) и Z(k). В каждом массиве найти максимальный элемент массива,и если это простое число-удалить все элементы,равные максимальному значению.Определить среднее арифметическое положительных элементов массива после удаления.
C++ задача "оценить сортировку" Пусть некотoрая сортирoвка рабoтает ровно c · n · log(n) нанoсекунд для сортировки маccива n чисел. Здесь log(n) обозначает логарифм по оcнoванию 2. Задано макcимальное время работы t, найдите такое наибольшее вещественозначное n, что алгоритм проработает не больше t. Входные данные В единственной строке заданы целые числа c, t (1 ≤ c ≤ 100, 1 ≤ t ≤ 2000000000). Выходные данные... http://www.cyberforum.ru/cpp-beginners/thread706069.html
C++ Строки. Определить количество слов, у которых первый и последний символ совпадают между собой.
Дана строка символов. Группы символов, не разделённые пробелами, считаются словами. Определить количество слов, у которых первый и последний символ совпадают между собой. Кто,чем,как?
C++ Размер структуры больше суммы размеров ее полей?
Доброго времени суток. Прошу помочь разобраться. Дано - есть такой тестовый код, составленный для проверки подозрения, вынесенного в заголовок: struct test_type { short t1; long t2; }; test_type test_var;
C++ строка в набор строк http://www.cyberforum.ru/cpp-beginners/thread706053.html
Поскольку правильного решения я так и не смог реализовать, обращаюсь за помощью: нужно превратить строку в набор строк,т.е в каждой строке должны находиться слова, и при этом длина строки не должна превышать 40 символов.Вроде всё ок, но не получается выводить по несколько слов в строке. Делаю так: void edit() { string ss="asd,afasfasf;sadasdasd/345435gdfgfdg sdfbjshbjwe"; ...
C++ Файлы. Записать в файл g компоненты файла f в алфавитном порядке. Дан текстовый файл f. Записать в файл g компоненты файла f в алфавитном порядке. :confusion: спасибо большое заранее!!! :* подробнее

Показать сообщение отдельно
00884
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 42

Циклический список. Решение задачи - C++

23.11.2012, 12:05. Просмотров 665. Ответов 1
Метки (Все метки)

Собственно нужно решить задачу с использованием технического списка. Проверить, удовлетворяют ли элементы списка (базовый тип integer) закону x=f(x0, h), где x – элемент списка, h – шаг, x0 – начальный элемент списка. Пример: x0=5, h=1. x1=6, x2=7, x3=8... Элементы списка удовлетворяют закону x=h(5,1).
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
#include <iostream>
#include <locale.h>
#include <cstdlib>
using namespace std;
 
struct element
{
    int data;
    element *next;
};
element *head=NULL;
element *current=NULL;
void addElement(int,element*,element*);
void myFunc(element*, int);
 
int main()
{
  setlocale(LC_CTYPE,"Russian");
  int n;
  cout<<"Введите количество элементов списка: ";
  cin>>n;
  cout<<"\nВвод элементов списка...\n";
  int inputData;
  //Вводим данные;
  for(int i=0;i<n;i++)
  {
    cout<<"Элемент списка №"<<i<<": ";
    cin>>inputData;
    addElement(inputData,head, current);
  }
  current->next=head;
  myFunc(head,n);
}
 
void addElement(int dataElement, element *pHead, element *pCurrent)
{
  element* pAdd=new element;
  pAdd->data=dataElement;
  if (pHead==NULL)
  {
    pAdd->next=pAdd;
    pHead=pAdd;
    head=pHead;
  }
  else
  {
    pAdd->next=pCurrent->next;
    pCurrent->next=pAdd;
  }
  pCurrent=pAdd;
  current=pCurrent;
}
 
 
 
/*Функция, проверяющая, удовлетворяют ли
элементы списка (базовый тип integer) закону
x=f(x0, h), где x – элемент списка, h – шаг,
 x0 – начальный элемент списка.
 Пример: x0=5, h=1. x1=6, x2=7, x3=8...
 Элементы списка удовлетворяют закону x=h(5,1)*/
void myFunc(element* pHead,int n)
{
  int h;
  cout.setf(cout.boolalpha);
  cout<<"Введите шаг h: ";
  cin>>h;
  element *pAdd=new element;
  element *pCurrent=new element;
  pAdd=pHead;
  pCurrent=pHead+2;
  bool *x=new bool;
  *x=true;
  for(int i=1;i<n;i++)
  {
    cout<<endl;
    if (pCurrent->data-pAdd->data!=h)
    {
      *x=false;
    }
    pAdd+=2;
    pCurrent+=2;
  }
  switch (*x)
  {
    case true:
      cout<<"Верно"<<endl;
      break;
    case false:
      cout<<"Не верно"<<endl;
      break;
    default:
      cout<<"Другой случай";
  }
  delete pAdd;
  delete pCurrent;
}
Честно говоря, только недавно начал изучать с++ и совсем недавно коснулся темы указателей. Не могу представить как тут можно использовать циклический список. Один раз прошелся по списку, заполнив его, второй раз прошелся, проверив условие. Додумался только добавить строчку
C++
1
current->next=head;
, что, вроде бы, делает список циклическим. Последний элемент указывает на начало списка. Достаточно ли этого?

Добавлено через 13 часов 31 минуту
ап!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru