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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 18:50   #1
vimeo
Новичок
Джуниор
 
Регистрация: 03.05.2010
Сообщений: 2
Вопрос Двусвязные списки

Здравствуйте, помогите разобраться со списками, для начала хотя-бы с тем как добавлять и выводить элементы списка. На данный момент пользуясь примерами наваял такое подобие:
Код:
struct node
{
	char name[10];
	char sname[20];
	char num[12];
	node *prev;
	node *next;
};

node *first=0;
node *last=0;
node *pNew;
void menu();
void add(node *pNew);
void print();
void menu()
{
	while (1)
	{
		int menu;
		printf("\n\t MENU: ");
		printf("\n1.Vvedite spisok");
		printf("\n2.prosmotretb spisok");
		printf("\n3.\tEXIT\n");
		scanf("%d", &menu);
		if(menu==1)
		{
			pNew=new node;
			add(pNew);
		}
		if(menu==2)
			print();
		if(menu==3)
			break;
	}
}

void add(node *pNew)
{
	printf("\n1. Vvedite imia: ");
	scanf("%10s", &pNew->name);
	printf("\n2. Vvedite familiy: ");
	scanf("%20s", &pNew->sname);
	printf("\n2. Vvedite nomer telephona: ");
	scanf("%12s", &pNew->num);
	if(first==0 && last==0)
	{
		first=last=0;
		pNew->next=0;
		pNew->prev=0;
	}
	else
	{
		last->next=pNew;
		last=pNew;
		last->next=0;
	}
}

void print()
{
	pNew=first;
	while(pNew)
	{
		printf("%s, %s, %s", pNew->name, pNew->sname, pNew->num);
		pNew=pNew->next;
	}
}


	

int main()
{
	menu();
	return 0;
}
но так-как я плохо понимаю как происходит добавление, соответственно прога работает неправильно и ничего не выводит на экран. Объясните плз.

Последний раз редактировалось vimeo; 03.05.2010 в 19:00.
vimeo вне форума Ответить с цитированием
Старый 03.05.2010, 18:56   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Вот тебе готовый класс
Вложения
Тип файла: rar blist.rar (1.7 Кб, 14 просмотров)
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 03.05.2010, 19:31   #3
vimeo
Новичок
Джуниор
 
Регистрация: 03.05.2010
Сообщений: 2
По умолчанию

Спс, но мне б саму суть понять, если не сложно напишите пожалуйста комментарии для этого кода:
Код:
void Postroenie (node **nsp, node **ksp)
// Построение двунаправленного списка: 
// *nsp - указатель на начало списка,
// *ksp - указатель на конец списка.
{
  node *rsp;
  int el;
  *nsp = new(node);
  rsp = *nsp;
  (**nsp).pred = (**nsp).sled = NULL;
  cout<<"Вводите последовательность:\n"; cin>>el;
  while (el!=0)
  { (*rsp).sled = new(node); (*((*rsp).sled)).pred = rsp; 
    rsp = (*rsp).sled; (*rsp).sled = NULL; (*rsp).elem = el; 
    cin>>el; }
    *ksp = rsp;
}
vimeo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязные линейные списки (С++) valdemar593 Помощь студентам 2 29.03.2010 10:43
Двусвязные списки(Язык С) ecokot Помощь студентам 1 10.09.2009 11:02
двусвязные списки ai\ekcah^p Общие вопросы C/C++ 11 06.06.2009 19:13
Двусвязные списки Serp Помощь студентам 3 14.04.2009 16:13