Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

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

Featured Replies

Никога не ми е било в сила програмирането и сега трябва да пиша програма на С++. Моля, всички, които могат да ми помогнат да го направят, много ще съм и благодарна.

Условието на задачата е следното:

Да се напише програма, която създава свързан списък, съдържащ информация за студентите от една група. Програмата да може да:

а) добавя данни за нов студент;

б) изтрива данните за студент;

в) търси данни за студент;

г) сортира по някаква данна елементите на списъка.

Благодаря ви предварително!!! :P

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

Никога не ми е било в сила програмирането и сега трябва да пиша програма на С++. Моля, всички, които могат да ми помогнат да го направят, много ще съм и благодарна.

Условието на задачата е следното:

Da se napishe programa, koqto syzdava svyrzan spisyk, sydyrjasht informaciq za studentite ot edna grupa. Programata da moje da:

a)dobavq danni za nov student;

b)iztriva dannite za student;

c)tyrsi danni za student;

d)sortira po nqkakva danna elementite na spisyka.

Благодаря ви предварително!!!

релационна база данни?

  • 2 месеца по-късно...

За сортирането ще се наложи да създадеш свой собствен свързан списък,в противен случай ще стане прекалено "скъпо" пренареждането. :]

Още едно .....

#include <string>

#include <iostream>


using namespace std;

 struct student {

			int fn;

			string name;

			student* next;

	  } *group = NULL, *last = NULL; 


	  void add()

	  {

			student* s=new student;

			cout<<"Fakulteten nomer=";

			cin>>s->fn;

			cout<<"Ime=";

			cin>>s->name;

			s->next=NULL;

			if(!group)

				  group=last=s;

			else

				  last->next=s;

			last=s;

	  }  

	  void list()


	  {

			student* s=group;

			while(s)

			{

				  cout<<"#"<<s->fn<<" - "<<s->name<<"\n";

				  s=s->next;

			}

	  } 

	  void search() {

			student* s=group;

			int search;

			cout<<"Vavedete fakulteten nomer za tarsene=";

			cin>>search;

			while(s)

			{

				  if(search==s->fn)

				  {

						cout<<"Namereno #"<<s->fn<<" - "<<s->name<<"\n";

						break;

				  }

				  s=s->next;

			}

	  } 

		void sort() {

		   student *lst, *tmp = group, *prev, *potentialprev = group;

		   int idx, idx2, n = 0;

		   student* s=group;

		   while(s)

			{

				   n++;

				  s=s->next;

			}

			for (idx=0; idx<n-1; idx++) 

			  {

				for (idx2=0,lst=group; 

					 lst && lst->next && (idx2<=n-1-idx);

					 idx2++)

				{

				  if (!idx2)

				  {

					prev = lst;

				  }


				  if (lst->next->fn < lst->fn) 

				  {  

					tmp = (lst->next?lst->next->next:0);


					if (!idx2 && (prev == group))

					{

					  group = lst->next;

					}

					potentialprev = lst->next;

					prev->next = lst->next;

					lst->next->next = lst;

					lst->next = tmp;

					prev = potentialprev;

				  }

				  else

				  {

					lst = lst->next;

					if(idx2)

					{

					  prev = prev->next;

					}

				  }	 

				} 

			  }

			  list();

	  }

	  void del() {

			student* s=group, *prev=group;

			int search;

			cout<<"Vavedete fakulteten nomer za iztrivane=";

			cin>>search;

			while(s) {

				  if(search==s->fn) {

						prev->next=s->next;

						if(s==last) last=prev;

						if(s==group) group=s->next;

						delete s;


						break; 

						}

			   prev=s;

			   s=s->next; 

			}


	  } 

	  int main(int argc, char* argv[])

	  {

			int choice;

			do {

				  cout<<"\n =============================================";

				  cout<<"\n1.Dobavi\n2.Pokaji\n3.Tarsi\n";

				  cout<<"4.Iztriy\n5.Sortiray\n6.Exit\n";

				  cout<<"\n =============================================";

				  cout<<"\nIzberete:";

				  cin>>choice;

				  switch(choice) {

					  case 1: add(); break;

					  case 2: list(); break;

					  case 3: search(); break;

					  case 4: del(); break;

					  case 5: sort(); break;

				  }

	  } while(choice!=6);


	  return 0;


	}

релационна база данни?

biggrin.gifbiggrin.gifbiggrin.gifbiggrin.gif

Изкефи ме с въпроса си момче!!!!

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

cool.gif

  • 3 седмици по-късно...
Евала само ако ми обясниш тва group за какво е и там където го ползваш какво точно прави ще съм много благодарен :rolleyes:

group е указателя към структурата, която е Student. Тъй като свързания списък

е направен всеки елемент да знае следващия, знаейки първия ние знаем целия списък (списък студенти = група)

Идеята на last влиза точно там - защото трябва да знаем и кой е последния. За да знаем например когато броим елементите в списъка кога да спрем.

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

необходимо да се обходят последователно (един

по един) съвкупност от елементи (с неизвестен

брой, в общия случай)

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

всеки елемент съдържа информацията,

необходима за достигане на следващ елемент

● Главното предимство на свързаните списъци е че

дават възможност ефективно да се пренареждат

елементите им

Малко добре обяснена теория може да е полезна

Въпрос!?!

Защо не ползвате STLски лист?

Целта на задачата е не да покажеш, че знаеш какви библиотеки има даден език.

Целта е да си разбрал теорията за свързаните списъци и да

покажеш пълна имплементация.

Аман от умни хора ..... angry.gifangry.gif

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

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.