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

Переворот линейного списка - C++

Восстановить пароль Регистрация
 
Crystalrose
0 / 0 / 0
Регистрация: 12.03.2010
Сообщений: 10
20.10.2010, 15:28     Переворот линейного списка #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
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <dos.h>
 
struct spis
{
  float value;
  spis *next;
};
 
void addElement(spis &spisok,float value)
{
  if (value == 0)
    return;
  spis *nextElem = new (spis);
  nextElem->value = value;
  nextElem->next = NULL;
  if (&spisok == NULL)
    &spisok = nextElem;
  else
  {
    spis *tmpSpis = &spisok;
    while (tmpSpis->next != NULL)
      tmpSpis = tmpSpis->next;
    tmpSpis->next = nextElem;
  }
}
 
void vvodSpisok(spis &spisok)
{
  float value;
  int i;
  i = 0;
  do
  {
    clrscr();
    printf("Введите значение элемента (0-окончание ввода) ");
    fflush(stdin);
    scanf("%f",&value);
    ++i;
    addElement(spisok,value);
 
  }
  while (value != 0);
}
 
void printSpisok(spis *spisok)
{
  if ((spisok == NULL) || (spisok->next == NULL))
  {
    printf("Список пуст\n");
    return;
  }
  spisok = spisok->next;
  while (spisok != NULL)
  {
    printf("%.2f -> ",spisok->value);
    spisok = spisok->next;
  }
  printf("NULL");
}
 
int main()
{
  spis spisok;
  spisok.next = NULL;
  spisok.value = 0;
  char pause;
  vvodSpisok(spisok);
  clrscr();
  printSpisok(&spisok);
  printf("\n");
  fflush(stdin);
  scanf("%c",pause);
  return 0;
}
Как проверить что список упорядочен по возростанию и написать процедуру для перестроения элементов этого списка в обратном порядке??? только начинаю учить С++...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2010, 15:28     Переворот линейного списка
Посмотрите здесь:

C++ Создание линейного списка
C++ сортировка линейного списка перестановками
C++ Удаление Линейного списка
создание линейного списка C++
Создание линейного списка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
20.10.2010, 16:46     Переворот линейного списка #2
Цитата Сообщение от Crystalrose Посмотреть сообщение
Как проверить что список упорядочен по возростанию
Список упорядочен по возрастанию, если каждый следующий член не меньше предыдущего.
написать процедуру для перестроения элементов этого списка в обратном порядке??? только начинаю учить
Поменять попарно элементы массива местами.
Crystalrose
0 / 0 / 0
Регистрация: 12.03.2010
Сообщений: 10
20.10.2010, 17:57  [ТС]     Переворот линейного списка #3
это понимаю... мне бы как именно на С++ организовать это. Кстати какого массива??
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
20.10.2010, 17:59     Переворот линейного списка #4
Начнём с того, что у вас связный список, а не линейный. Что такое "динамические переменные" - я не знаю.
Yandex
Объявления
20.10.2010, 17:59     Переворот линейного списка
Ответ Создать тему
Опции темы

Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru