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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 23:41   #1
tema654
Пользователь
 
Регистрация: 11.10.2010
Сообщений: 49
Смущение Однонаправленные списки.

Вот попытался сделать список однонаправленный. уже 3 часа сижу, не могу сделать.
Подскажите, в чем дело?
Код:
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
using namespace std;
struct a {
        int pole;
        a *next;
        a *pr;
} el;
 
int _tmain(int argc, _TCHAR* argv[])
{a  *start, *end, *tek, *temp, *pr;
int k=0; int flag=0;
for(;;)
{cout <<" vvodit dannye?";
cin >>k;
if (k==0) break;
tek=(struct a*)malloc(sizeof(el));
cout <<"\n element";
cin >>tek ->pole;
tek->next=0;
if(flag==0) {flag=1; start=end=tek; pr=tek; }
else
{end =tek;
tek->next=pr;
pr=tek;
}
}
tek=start;
 
do {
        cout<<tek->pole<<":"<<tek->next<<endl;
        tek=tek->next;
} while (tek!=end);
 
system("pause");
        return 0;
}
tema654 вне форума Ответить с цитированием
Старый 29.12.2011, 12:01   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Вы на С пишите или на С++?
Если первое - уберите iostream и используйте printf и scanf для ввода-вывода, если второе - вместо
Код:
tek=(struct a*)malloc(sizeof(el));
Напишите это (результат тот же, но читаемость кода вырастет)
Код:
tek = new a;
И скажите, что именно не работает.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 29.12.2011, 14:39   #3
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

Код:
#include "stdafx.h"

#include <iostream>
using namespace std;

struct elemA {
        int pole;
        elemA *next;
        elemA *prev;
		elemA() : next( NULL ), prev( NULL ), pole( -1 )
		{
		}
};
 
int _tmain(int argc, _TCHAR* argv[])
{
	
elemA  *pStart = NULL,
elemA  *pEnd = NULL;
int k = 0;

for(;;)
{
	cout <<" vvodit dannye?";
	cin >> k;
    if( k < 0 ) break;
    elemA *newA = new elemA; //при создание все указатели занулены
    cout << endl << "element :";
    cin >> newA->pole;
    if( pEnd ) //будем считать это очередь, добавляем в конец
               {
		pEnd->next = newA;
                      pEnd = newA;
               }
	else
           {
		pStart = pEnd = newA;
            }
}

//печать
cout << endl << " Print Elemets:" << endl;
elemA *pElem = pStart;
while( pElem )
{
  cout << pElem->pole << ":" << hex << tek->next << endl;
  pElem = pElem->next;
}

//удаление
while( pStart )
{
  elemA * pElemForDelete = pStart;
  pStart = pStart->next;
  delete pElemForDelete;
}
pStart = NULL;
pEnd = NULL;


system("pause");
        return 0;
}

Последний раз редактировалось ElectroMent; 29.12.2011 в 14:42.
ElectroMent вне форума Ответить с цитированием
Старый 29.12.2011, 14:49   #4
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

Разницу сразу видно.
ElectroMent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Однонаправленные линейные списки Lubawa Паскаль, Turbo Pascal, PascalABC.NET 4 07.11.2011 16:21
однонаправленные списки в C Edemchik Помощь студентам 1 21.05.2011 17:50
Однонаправленные списки Цветик Общие вопросы C/C++ 3 22.11.2010 15:09
Однонаправленные списки в си Марсель059 C++ Builder 18 27.11.2009 13:16