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

структуры данных. сортировка однонаправленного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++, Составить программу поиска элемента массива http://www.cyberforum.ru/cpp-beginners/thread585504.html
2. Задан числовой массив А. Составить программу поиска элемента массива, который является одновременно наименьшим в строке и наименьшим в своем столбце. Вывести номер столбца и строки, если такой элемент есть и 0 если нет. Заранее спасибо, язык С++
C++ В матрице разместить все строки по возрастанию суммы цифр в каждой строке В двумерном массиве разместить все строки по возрастанию суммы цифр в каждой строке http://www.cyberforum.ru/cpp-beginners/thread585497.html
C++ задача: вычислить среднее арифметическое четырех вводимых чисел (но использовать функции)
пожалуйста!!!
C++ Удалить все числа, которые начинаются и заканчиваются на одну и ту же цифру
в одномерном массиве заменить все числа начинаются и заканчиваются на одну и ту же цифру Добавлено через 3 минуты сори ошибка в одномерном массиве удалить все числа начинаются и заканчиваются на одну и ту же цифру
C++ Списки http://www.cyberforum.ru/cpp-beginners/thread585475.html
Добрый день : (Пишу на Dev-c++) Задание . Сформировать стек циклического списка и удаляет из него стул заданного материала и максимальной высотой.. Итак, стул заданного материала удаляет, но не получаеться написать цикл чтобы проверял на максимальную высоту. Читаю два файла : vhodnoi.txt( red 100
C++ Рекурсивные алгоритмы. Создание рекурсивной функции. Написать программу и рекурсивную функцию для вычисления значения суммы бесконечного ряда с заданной точностью. На печать вывести значение суммы и число членов ряда, вошедших в сумму. Вычислить значение ряда, используя заданную формулу или воспользовавшись библиотечной функцией. Пожаалуйста пожалуйста помогиитее))заранее спасибо подробнее

Показать сообщение отдельно
s-mumrik
Сообщений: n/a
25.05.2012, 14:49     структуры данных. сортировка однонаправленного списка
значит так, есть вот эта программа:

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
#include <stdio.h>
#include <conio.h>
#include <math.h>
struct spisok
{   int info;
    spisok *link;
};
spisok *first=NULL;
 
 
void add(int data )
{
    if (first==NULL)
    {
    first=new (spisok);
    first->info=data;
    first->link=NULL;
    }
    else
    {
    spisok *adr;
    adr=first;
    while (adr->link!=NULL)
    {
      adr=adr->link;
    }
    adr->link=new (spisok);
    adr=adr->link;
    adr->info=data;
    adr->link=NULL;
    }
}
void print()
{
  spisok *adr;
  if (first==NULL)
    printf("!!!spisok pust \n");
  else{
    adr=first;
    while (adr!=NULL){
      printf("%d  ",adr->info);
      adr=adr->link;
    }
    printf("\n");
  }
}
 
void del(int data)
{
    spisok *adr,*adr1;
    adr=first;
    if (first==NULL)
      printf("!!!spisok pust \n");
    else
    {
      if (adr->info==data)
      {
    first=adr->link;
    delete adr;
      }
      else
      {
    if(adr->link->info==data)
    {
      adr1=adr->link;
      adr->link=adr->link->link;
      delete adr1;
    }
    else
    printf("\n!!!takogo elementa net \n");
      }
    }
}
 
void sortirovka (spisok *head )
{int k;
do
{
  k=0;
  int l=0;
  while (head->link != NULL)
  {
    if (head->info>head->link->info)
    {
    head;
    spisok *q=head;
    spisok *qq=head->link->link;
    first=head->link;
    first->link=q;
    first->link->link=qq;
    k=k+1;
    head=head->link;
    }
    else
    {
      head=head->link;
    }
    printf("%d",k);
  }
}
while (k!=0);
}
 
main()
{       clrscr();
    int n,a;
    do
    {
    printf("\n");
    printf("1. dobavit element \n");
    printf("2. posmotret spisok \n");
    printf("3. udalit element \n");
    printf("4. sortirovka elementov \n");
    printf("5. vyhod \n\n");
    printf("vyberite punkt menu: ");
    scanf("%d",&n);
    if (n==1)
    {
     printf("vvedite element \n");
     scanf("%d",&a);
     add(a);
    }
    if (n==2) print();
    if (n==3)
    {
        printf("vvedite ydaljaemoe chislo \n");
        scanf("%d",&a);
        del(a);
    }
    if (n==4) sortirovka(first);
    }
    while (n!=5);
}
все работает, кроме сортировки. то есть сортировка тоже работает, но только для сферического списка в вакууме(только для 2-х элементов). сортировка без перестановки элементов, то есть можно только перенаправить указатели. помогите пожалуйста разобраться, уже 2-ю неделю мучаюсь с прогой.

Добавлено через 21 час 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
void sortirovka (spisok *head )
{int k;
do
{
  k=0;
  int l=0;
  while (head->link != NULL)
  {
    if (head->info>head->link->info)
    {
    head;
    spisok *q=head;
    spisok *qq=head->link->link;
    first=head->link;
    first->link=q;
    first->link->link=qq;
    k=k+1;
    head=head->link;
    }
    else
    {
      head=head->link;
    }
    printf("%d",k);
  }
}
while (k!=0);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru