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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 12:24   #1
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию Cписки с++

Приветствую. Разработал список, который должен выводить список, элементы которого добавляются в конец. Но он не выводит список элементов, не пойму почему. Прошу проверить!
Код:
//---------------------------------------------------------------------------

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

#pragma argsused

struct link
{
	int data;
	link* next;
};
  /////////////////////////////////////
	/////////////////////////////////////
	  /////////////////////////////////////
class linklist
{
	private:
	link* first;
	link* start;
	public:
		linklist ()
				{first = NULL; start = NULL;}  //first - дополнительный элемент, start - первый элемент списка

	void additem (int d);
	void display ();
	void additemperednomerom ();
   };
   /////////////////////////////////////
	 /////////////////////////////////////
	void linklist::additem( int d )
	{
	  link *newlink = new link;      // отводим память
	  if (start = NULL) { //если стартовый равен нулю
	  start  = newlink ;        //делаем стартовый текущий
	  newlink->data = d;          // и заполняем в него раздел дата
	  first = newlink;            // в дополнительный кидаем  наш предыдущий номер, для того чтобы потом заполнить next.
	  }
	  if (start != NULL) // теперь же если у нас есть стартовый элемент
	  {
	  newlink->data = d;    // в отведенную память кидаем значение
	  newlink->next = NULL;    // Cледующей номер в текущей структуре делаем 0. Он заполниться при добавлении следущего элемента
	  first->next = newlink;  // а вот и заполняем значение прошлой структуры(элемента), отводим ссылку на данный элемент
	   first = newlink ;        // теперь значение предыдущего принимает за текущее.
	  }
	}
	/////////////////////////////////////
	   /////////////////////////////////////
	   /////////////////////////////////////
		void linklist::display( )
	{
   link *current = start; //начинаем со стартого элемента
   while( current )       // пока не дойдем до элемента NULL
   {
	   cout <<current->data << endl;  // выводим его значение
	   current = current->next;       // и ставим следущее следующим.

   }
	}

	 /////////////////////////////////////
	 /////////////////////////////////////
	 /////////////////////////////////////

int _tmain(int argc, _TCHAR* argv[])
{
linklist li;
li.additem(27);
li.additem(28);
li.additem(29);
li.additem(30);

 li.display();
getch();
}
//---------------------------------------------------------------------------
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 15.11.2011, 12:25   #2
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию

Пояснил мой ход, чтобы небыло лишних вопросов.
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 15.11.2011, 12:32   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

для начала видится мне, что нужно перед
if (start != NULL) // теперь же если у нас есть стартовый элемент
поставить else
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 15.11.2011, 12:39   #4
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию

Цитата:
для начала видится мне, что нужно перед
if (start != NULL) // теперь же если у нас есть стартовый элемент
поставить else
Так помоему смысл не меняет, вначале обрабатываем если стартового нет, а затем если стартовый есть....ведь 3его не предусмотрено
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 15.11.2011, 12:53   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

если else не вписать, то если нету - он его создаст. Т.к. слова "ИНАЧЕ" нету, то проверка на start!=NULL будет истинной и программа запустит уже не то что Вам надо
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 15.11.2011, 12:56   #6
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию

Цитата:
если else не вписать, то если нету - он его создаст. Т.к. слова "ИНАЧЕ" нету, то проверка на start!=NULL будет истинной и программа запустит уже не то что Вам надо
спс...вот это понял да. Но список все равно не выводиться. Вот незнаю почему, уже и алгоритм на бумажке расписал, должно ведь выводить
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Старый 15.11.2011, 13:02   #7
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

я сейчас могу ошибиться, но
link *newlink = new link; // отводим память
Вроде бы нужно по другому
link* newlink = new link; // отводим память
аналогично с current в display
А вообще бы поковырять отладчик, думаю сразу станет видно где ошибка
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 15.11.2011, 21:47   #8
paravoz1k
Пользователь
 
Аватар для paravoz1k
 
Регистрация: 26.03.2010
Сообщений: 78
По умолчанию

Блин, жесткач господа, последствия программирования на делфи дают о себе знать)
Моя ошибка:
Цитата:
if (start = NULL)
AAAA. должно быть:
Цитата:
if (start == NULL)
Начинающий кодер Delphi + PHP
paravoz1k вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cписки Sigwey Помощь студентам 1 14.12.2010 10:21
Cписки Ericnex Помощь студентам 1 19.05.2010 09:19
Cписки С++ werser Помощь студентам 2 25.05.2009 19:53
Cписки.Помогить плз.Никак разобраться не могу...:( Digital Паскаль, Turbo Pascal, PascalABC.NET 2 17.05.2008 10:48