Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите найти ошибку в коде, в долгу не останусь

82K
17 мая 2012 года
Irishka_23
1 / / 17.05.2012
Программа реализует алгоритм R поразрядной сортировки списков [2]:
R1 [Цикл по k.] Вначале установить P ← LOC(RN ), указатель на последнюю запись. Затем выполнить шаги с R2 по R6 при k = 1, 2, . . . , p (шаги с R2 по R6 составляют один ”просмотр”) и завершить работу алгоритма. Переменная P будет указывать на запись с наименьшим ключом, LINK(P)—а запись со следующим по величине ключом, LINK(LINK(P))—на следующую и т.д.; поле LINK последней записи будет равно Λ.
R2 [Опустошить стопки.] При 0 ≤ i < M установить TOP ← LOC(BOTM) и BOTM ← Λ.
R3 [Выделить k-ю цифру ключа.] Пусть KEY(P) — ключ записи, на которую указывает P,— равен (ap , . . . , a2 , a1 ); установить i ← ak , k-я младшая цифра этого ключа.
R4 [Скорректировать связи.] Установить LINK(TOP) ← P, затем TOP ← P.

R5 [Перейти к следующей записи.] Если k = 1 (первый просмотр) и если P = LOC(Rj ) при некотором j = 1, то установить P ← LOC(Rj−1 ) и возвратиться к шагу R3. Если k > 1 (не первый просмотр), то установить P ← LINK(P) и возвратиться к R3, если P = Λ.
R6 [Выполнить алгоритм H.] (Теперь мы уже распределили все элементы по стопкам.) Выполнить приведенный ниже алгоритм H, который сцепляет отдельные ”стопки” в один список, подготавливая их к следующему просмотру. Затем установить P ← BOTM[0], указатель на первый элемент объединенного списка.

Алгоритм H. (Сцепление очередей.)
H1 [Начальная установка.] Установить i ← 0.
H2 [Указатель на вершину стопки.] Установить P ← TOP.
H3 [Следующая стопка.] Увеличить i на 1. Если i = M , то установить LINK(P) ← Λ и завершить работу алгоритма.
H4 [Стопка пуста?] Если BOTM = Λ, тo возвратиться к HЗ.
H5 [Сцепить стопки.] Установить LINK(P) ← BOTM. Возвратиться к H2.

а вот код

#include <stddef.h>
#include<iostream>
#include <stdlib.h>
using namespace std;

struct Elem
{
int *key;
Elem *Link;
Elem()
{
this->Link = NULL;
this->key = NULL;
}
};
int main()
{
int n;
cout « "vvedite kol-vo zapisey" « endl;
cin » n;
Elem *R;
R = new Elem[n + 1];
cout « "vvedite kolithestvo bukv v kazdom slove" « endl;
int t;
cin » t;
cout « "vvedite slova" « endl;
for (int i = 1; i < n + 1; i++)
{
R.key = new int[t + 1];
for (int j = 1; j < t + 1; j++)
{
cin » R.key[j];
}
}
Elem *P;
Elem **Top;
Top=new Elem* [10];
Elem **Botm=new Elem* [10];
P = &R[n];
for (int k = 1; k < t + 1; k++)
{
for(int i=0;i<10;i++)
{
Top=(Elem*)&Botm;
Botm=NULL;
}
R3:
int i = P->key[t + 1 - k];
Top->Link = P;
Top = P;
if (k == 1)
{
int j = n;
while ((P != &R[j]) && (j > 0))
{
j--;
}
if ((j!=1) && (P == &R[j]))
{
P = &R[j - 1];
goto R3;
}
} else
{
P = P->Link;
if (P != NULL)
{
goto R3;
}
}
int ii = 0;
H2:
P = Top[ii];
H3:
ii++;
if (ii == 10)
{
P->Link = NULL;
goto STOP;
}
if (Botm[ii] == NULL)
{
goto H3;
}
P->Link = Botm[ii];
goto H2;
STOP:
P = Botm[0];
}
while (P != NULL)
{
for (int i = 1; i < t + 1; i++)
{
cout « P->key;
}
cout « endl;
P = P->Link;
}
return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог