Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 16:42   #1
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию Циклический двусвязный список.

Задание:
  • создать циклический список
  • отсортировать список(использовать сортировку выбором)
  • при сортировке элементов списка использовать не перестановку значений полей данных, а изменение полей указателей(перенаправление))

вот что я написала
Код:

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------

	struct LIST
	{
	int dann;
	LIST* next;
	LIST* prev;
	};

	LIST* beg=NULL;
	LIST* rex=NULL;
	LIST* end=NULL;

  
	LIST* i=NULL;
	LIST* j=NULL;

//----------------------------------------------------------------------------

void make(int  a)
{
rex=new LIST;
rex->dann = a;

if (beg==NULL)
		{
		beg=rex;
		beg->prev = rex;
		}
else
	end->next=rex;

rex->prev=end;
end=rex;
end->next=beg;
beg->prev = end;
}


//--------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
	int iCount=0;
	int n, a;
	int iDone;

	clrscr();
	randomize();
	
	n=10;
	for(iCount=0; iCount<n; iCount++)
	{
		a = random(56)-22;
		make(a);
	}
	iCount=0;
	rex = beg;
	while(iCount<n)
	 {
	   cout<<rex->dann<<" ";
	   rex=rex->next;
	   iCount++;
	  }

	 iCount=0;
	 for(i=beg; i->next != beg; i = i->next)

		for(j = i->next; j->next != beg; j = j->next)  

			if(j->dann < i->dann)   
				{
				 iCount++;
				
				 i->prev->next = i->next;
				 j->next->prev = j->prev;
				 j->prev = i->prev;

				 i->next = j->next;
				 i->prev = j;
				 j->next = i;
				}


	 cout<<endl;

	rex = beg;
	iCount=0;
	while(iCount<n)
	 {
	   cout<<rex->dann<<" ";
	   rex=rex->next;
	   iCount++;
	 }
	cout<<endl;


	getch();
	return 0;
}

не работает, не понимаю почему. Помогите, пожалуйста.
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)

Последний раз редактировалось Arcueid1691; 10.11.2010 в 19:00. Причина: опечатка была
Arcueid1691 вне форума Ответить с цитированием
Старый 10.11.2010, 18:09   #2
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

Эм
Код:
LIST* beg=NULL;
	LIST* rex=NULL;
	LIST* end=NULL;

  
	LIST* i=NULL;
	LIST* j=NULL;
меня это смущает.
ты создаёшь указатель на List
LIST* i;
как ты можешь указатель на структуру инициализировать NULL?
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 10.11.2010, 18:58   #3
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

Нам так в лекциях давали.
даже если не инициализировать суть то не меняется.
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)

Последний раз редактировалось Arcueid1691; 10.11.2010 в 19:18.
Arcueid1691 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный список Work Group Паскаль, Turbo Pascal, PascalABC.NET 12 13.07.2010 01:44
двусвязный список Work Group Помощь студентам 0 24.05.2010 21:27
двусвязный список klykovka Помощь студентам 8 22.05.2010 18:58
двусвязный список на си++ mizantrop32 Общие вопросы C/C++ 0 18.05.2010 17:45
Двусвязный список kruserg Паскаль, Turbo Pascal, PascalABC.NET 1 28.04.2009 10:37