Премини към съдържанието

Препоръчан отговор


Здравейте, може ли малко помощ с една задача:

Да се състави функция, която извежда на екрана най- големия (най-малкия) по ключова стойност елемент на списък с начален указател START. 

 

Някой ако има някакви идеи ще е супер.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добре като за начало искам да попитам, най- малкият елемент по ключова стойност означава първият елемент ли? 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 16 минути, Ммм написа:

Добре като за начало искам да попитам, най- малкият елемент по ключова стойност означава първият елемент ли? 

Не, всеки елемент от списъка, общо казано, се състои от данни и връзка/и към съседният/те елемент/и. В случая данните ще представляват ключ - нещо сравняемо, примерно число. Тоест трябва да обходиш списъка и да намериш този от елементите, чийто ключ е най-голям или най-малък.

Редактирано от flare (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

....
Добре имаме структура

{
int key;
elem *next;
} *start;

Инициализираме списъка и добавяме елементи:

void init()
{
start=NULL;
}

void add_b(init n)
{
elem *p=start;
start=new elem;
start->key=n;
start->next=p;
}

и за търсене, но не е за ключова стойност .... 
 

int search (int n)
{
elem *p=start;
if(start)
{
while ((p->key!=n) && (p->next))
 p=p->next;
if (p->key==n)
return 1;
else
return 0;
}
return 0;
}

Не знам, помагайте..


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

search() може и да работи но не ми харесва как е реализиран, по-скоро нещо от рода на 

int search(int n)
{
   elem *p=start;
   while (p)
   {
       if (p->key==n) return 1;
       p=p->next;
   }
   return 0;
}

Само че не виждам за какво ти е за да определиш макскималния или минималния елемент на списъка.

Редактирано от ined (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 9 минути, Ммм написа:

за търсене,

Не знам, помагайте..

Ами функцията за търсене е много добро начало. Тя обхожда списъка, докато намери конкретен ключ.Значи само трябва да я преправиш да търси вместо това максимален или минимален. За целта, присвояваш във временни променлива стойността и указателя на първия ключ и обхождаш останалите, като проверяваш ако някой е по-голям (или по-малък съответно) си актуализираш променливите с него. Като стигнеш до края, във тях ще имаш нужния ти резултат.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 1 минута, ined написа:

search() може и да работи но не ми харесва как е реализиран, по-скоро нещо от рода на 


int search(int n)
{
   elem *p=start;
   while (p)
   {
       if (p->key==n) return 1;
       p=p->next;
   }
   return 0;
}

Само че не виждам за какво ти е за да определиш макскималния или минималния елемент на списъка.

Този search обхожда списъка нали? Как мога да търся най- голямата или най- малката стойност 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
Току що, Ммм написа:

Този search обхожда списъка нали? Как мога да търся най- голямата или най- малката стойност 

Точно това обясних по-горе.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ами благодаря за отделеното време (наистина), но ако можех да се справя с обяснение без код щях и да се справя и без да пиша тук. 

преди 7 минути, flare написа:

присвояваш във временни променлива стойността и указателя на първия ключ и обхождаш останалите, като проверяваш ако някой е по-голям (или по-малък съответно) си актуализираш променливите с него. Като стигнеш до края, във тях ще имаш нужния ти резултат.

...

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

В условието на задачата пише, че трябва да се изведат най-големият и най-малкият елементи.

Твоята функция за търсене търси някакъв специфичен елемент и връща 1 ако го намери или 0 в противен случай.

Няма да е зле да уточниш, какво искаш.

Ето една функция според условието на задачата.

Ако дадеш на функцията аргумент 1, тя търси най-малкия елемент, ако дадеш 0 - най-големия.

Този код работи по-бавно, но също така заема по-малко памет.

http://paste.ofcode.org/3ahb3tahUeXp6rXUTAWacuj

Този код работи по-бързо, но също така заема повече памет.

http://paste.ofcode.org/bFH2kkrvT8Hk24WANSmwnE

Редактирано от programprogram (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Имам някакъв проблем със слепването на отделните функции и с това как да направя main-a . Може ли някой да ми покаже целия окончателен код?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 2 минути, Ммм написа:

Имам някакъв проблем със слепването на отделните функции и с това как да направя main-a . Може ли някой да ми покаже целия окончателен код?

Това ми звучи като следната ситуация:

Майката приготвя храна на детето, слага масата, слага му лигавничето и най-трудната част остава за детето, а именно- да си отвори устата.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
Цитат

Ето една функция според условието на задачата.

Ако дадеш на функцията аргумент 1, тя търси най-малкия елемент, ако дадеш 0 - най-големия.

Чукча писател не читател - условието е функцията да изведе на екрана стойността на най-големия елемент. 

А после може и да напише функция дето да извежда най-малкия

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.