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

Свързан списък, съставен от други свързани списъци

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


Здравейте! В учебника по програмиране, от който уча, видях една интересна задача. Проблемът ми е, че примерният код, който е даден е малко объркващ. Задачата е следната:

Да се състави свързан списък от свързани списъци, след което елементите в главния списък да се конкатенират.

В учебника примерният код протича по следния начин:

Първо се създава тип на променлива -> typedef List<int> DList;

След това се създават няколко списъка (да кажем два) от типа DList и един главен от тип List<DList>;

List<DList> L; //главнияDList A, B; //двата, които ще бъдат включени в главния

Следва попълването на списъците A и B и вкарването им в главния списък L.

A.Add_Node(1);A.Add_Node(2);A.Add_Node(3);B.Add_Node(4);B.Add_Node(5);B.Add_Node(6);L.Add_Node(A);L.Add_Node(B);

Засега всичко се компилира и при мен. Проблемът идва като се опитам да ги слея. В кода от учебника се използва функция от по-висок ред, но смятам, че няма нужда да се вглеждам толкова в нея, тъй като просто е показано, че в случая може да се приложи и да се обясни как работи една такава функция. И така.. представяме си, че си е обикновенна функция Start(). Представена е ето така:

T Start(T null_val, List<T>& L)  {	 T s = null_val;	  List *temp = L.start_ptr; //Намираме първата връзка в списъка	  while(temp)		 {		    s = concat(s, temp->data);		    temp = temp->next;		 }	  return s;  }

Функцията се извиква ето така:

DList L2; // тук ще бъдат вкарани свързаните елементиDList L1 = Start(L2, L); //L е главнияг списък

И функцията за конкатенация:

DList concat(DList L1, DList L2)  {    DList L;    List<int> *temp1 = L1.start_ptr;    List<int> *temp2 = L2.start_ptr;    while(temp1)	   {		  L.Add_Node(temp1->data);		  temp1 = temp1->next;	   }    while(temp2)	   {		  L.Add_Node(temp2->data);		  temp2 = temp2->next;	   }	 return L;  }

Това са двете проблемни функции. И ето какви са проблемите, които срещам при опит за компилация: На всякъде където се среща start_ptr, data и next ми извежда, че стойностите са private. След това ми извежда и грешки при викането на функциите - че не се очакват такива типове за параметри. Ако може да ми помогнете, ако сте се сблъсквали с такъв проблем ще съм ви много благодарен. Ще се радвам дори и ако ми дадете някакъв източник откъдето мога да прочета нищо повече за такъв тип задачи.

 

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


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

Прочети за класове и обекти, не "този тип задачи". Грешката, която си получил показва, че се опитваш да ползваш личните (private) данни на един клас. Това, че ти не разбираш, защо се получава, значи, че не знаеш да работиш с класове. А това е много фундаментално нещо, и по-добре препрочети всичко наново, отколкото да правиш разни задачи, колкото да тръгнат. За класовете пише във всеки учебник за C++. За грешките с типовете - трябваше да дадеш и дефиницията на класа List.

  • Харесва ми 1

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


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

Прочети за класове и обекти, не "този тип задачи". Грешката, която си получил показва, че се опитваш да ползваш личните (private) данни на един клас. Това, че ти не разбираш, защо се получава, значи, че не знаеш да работиш с класове. А това е много фундаментално нещо, и по-добре препрочети всичко наново, отколкото да правиш разни задачи, колкото да тръгнат. За класовете пише във всеки учебник за C++. За грешките с типовете - трябваше да дадеш и дефиницията на класа List.

Да, беше ми ясно, че проблемите са защото данните са private. Просто не знаех защо в учебника се получава, а при мен не. Но се оправих. Излезе, че при дефинирането на класа в учебника е използвана отделна структура за данните, а моите бяха директно член-данни на класа и ги бях направил private. Трябва другия път да гледам по-внимателно :brick wall:

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


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

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

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

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

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

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

Вход

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

Вход

×

Информация

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