Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка, список 
:(
    Опции темы
warwar123
Дата 30.5.2013, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 30.5.2013

Репутация: нет
Всего: нет



после комментария //1111 идет сортировка пузырьком, там есть какая-то ошибка

Код

// spisok.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "conio.h"

using namespace std;


struct Item 
{
int info;
Item* next;
};



int _tmain(int argc, _TCHAR* argv[])
{

Item *first = NULL; //Указатель на начало списка
Item *p;

int i;

// Создать список
for (;;) 
{
// Вводить числа, пока не введем 0
cin >> i;
//if (!i) break;
if (i==999) break;

// Создать новый элемент списка
p = new Item;
p->info = i;

// Присоединить новый элемент к началу списка
p->next = first;
first = p;
}




//1111

Item *q;


p = first;

while (p) 
{

    if((p->info)>(p->next->info))
    {

        q=p;

        p=p->next;

        p->next=q;

    }

p = p->next;


}




//2222







// Пройти список и вывести элементы
p = first;
while (p) {
cout << p->info << " ";
p = p->next;
}

// Пройти список и удалить элементы
while (first) 
{
p = first;
first = first->next ;
delete p;
}

getch();

return 0;
}

PM MAIL   Вверх
feodorv
Дата 30.5.2013, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Ошибка уже здесь:
Цитата(warwar123 @  30.5.2013,  06:40 Найти цитируемый пост)
57:    if((p->info)>(p->next->info))

Если Вы точно знаете, что p не NULL, то в p->next Вы уже так быть уверены не можете.

Хуже того, при перестановке местами
Цитата(warwar123 @  30.5.2013,  06:40 Найти цитируемый пост)
    if((p->info)>(p->next->info))
    {
        q=p;
        p=p->next;
        p->next=q;
    }

у элемента списка p может быть предшественник, которому тоже нужно поменять поле next с p на p->next. Ну и необходимо следить за головой списка first, если Вы меняете этот элемент, то нужно обновить и значение first. 


Цитата(warwar123 @  30.5.2013,  06:40 Найти цитируемый пост)
после комментария //1111 идет сортировка пузырьком

Сортировки пузырьком нет. Есть единственный цикл, который нужно повторять до тех пор, пока хоть какие-то элементы списка переставляются местами.



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.