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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2012, 21:52   #1
Nursi
 
Регистрация: 05.06.2012
Сообщений: 4
По умолчанию Двусвязные списки. Visual C++

naiti summu vseh uzlov, ne mogu dopisat' programmu...
Код:
#include<iostream>
#include<conio.h>
#include<stdio.h>

using namespace std;


struct node
{
	int g; 
	node *rlink, *llink; 
};
void llist(node *left)
{
	node *k=left;
	while (k != NULL)
	{
		printf("%d\t", k->g);
		k=k->rlink;
	}
}
void rlist(node *right)
{
	node *k=right;
	while (k != NULL)
	{
		printf ("%d\t", k->g);
		k=k->llink;
	}
}

void main()
{
	node *k, *q, *left, *right;
	int w;
	printf("Vvedite chislo: ");
	scanf("%d",&w);
	k = new node;
	k->g = w;
	k->rlink = NULL;
	k->llink = NULL;
	right = k;
	q = k;
	printf("Vvedite sled. chislo: ");
	scanf("%d", &w);

	while(!feof(stdin))
	{
		k=new node;
		k->g = w;
		k->rlink = q;
		q->llink = k;
                q = k;
		printf("Vvedite sled. chislo: ");
		scanf("%d",&w);
	}
	q->llink = NULL;
	left = q;
	printf("\nsleva napravo\n ");
	rlist(right);
	printf("\nsprava nalevo\n");
    llist(left);
	node *l;
	l = k = left;

	//'dal'she ne mogu ispravit'sya, gde to zdes' u menya oshibka

	int sum=0;
	while (k != NULL)
	{
		sum = sum+k->g;
	}
	printf("\n summa vseh uzlov \n");
	printf("%d", sum);

	getch();
}
kak mojno nayti summu vseh uzlov?

Последний раз редактировалось Nursi; 05.06.2012 в 21:58.
Nursi вне форума Ответить с цитированием
Старый 05.06.2012, 22:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Обычно ищут рекурсией, удобнее. Что-то вроде:
Код:
int megasumm(node* n){
 int r=(n->rlink)?megasumm(n->rlink):0;
 int l=(n->llink)?megasumm(n->llink):0;
 return n->g+l;
}
Ну и вызываешь, передавая в нее корневой узел.
P.S. Пишу с потолка, не проверял, возможно нужно условие на выход. Хотя че это я... Условие там должно сработать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 15:22   #3
Nursi
 
Регистрация: 05.06.2012
Сообщений: 4
По умолчанию

ya proboval, no ne rabotaet vse ewe
Nursi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязные списки vlados007 Общие вопросы C/C++ 5 13.02.2012 18:12
Двусвязные списки Evacuator C++ Builder 0 29.05.2011 13:12
Двусвязные списки vimeo Общие вопросы C/C++ 2 03.05.2010 19:31
двусвязные списки ai\ekcah^p Общие вопросы C/C++ 11 06.06.2009 19:13
Двусвязные списки Serp Помощь студентам 3 14.04.2009 16:13