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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Обясняване на задача

Featured Replies

Имам следната задача:

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

#include <iostream>
using namespace std;
struct elem
{
	int key;
	elem *next;
}
*first=NULL, *last=NULL, *p;
void push(int n)
{
	p=last;
	last=new elem;
	last->key=n;
	last->next=NULL;
	if (p!=NULL)
		p->next=last;
	if (first=last)
	{
		first=last; }
}
int pop(int &n)
{
	if (first)
	{
		p=first;
		n=first->key;
		first=first->next;
		if (first==NULL)
			last=first;
		delete p;
		return 1;
	}
	else
		return ;
}
int main()
{
int num;
cout<<" Vuvedete stoinost";
cin>>num;
while (num!=)
{
push(num);
cout<<"Vuvedete stoinost";
cin>>num;
}
cout<<"Opashkata e:";
while 
	(pop(num))
	cout<<num<<"\t";
	cout<<endl;
system("pause");
return ;
}

Искам някой подробно да ми я обясни, всеки един елемент и какво прави.

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

#include <iostream>         // хедър за вход и изход
using namespace std;        // неймспейс на стандартната библиотека
struct elem          // помощен клас за въвеждане на данна в едносвързан списък
{
	int key;            // данна
	elem *next;         // указател към следващия елемент в списъка
}
*first=NULL, *last=NULL, *p; // глава, край, и помощен пойнтър
void push(int n) // функция за вмъкване на елемент в опашката
{
	p=last;  // насочваш помощния пойнтър към края на списъка.
	last=new elem; // заделяш място в хипа за нов елемент като насочваш крайния пойнтър към него.
	last->key=n; // записваш данните в мястото за данни в току що заделената за новия елемент памет
	last->next=NULL; // записваш указателя за следващ елемент, като го приравняваш на нула
                     // тъй като току що записания елемент естествено е последен
	if (p!=NULL)     // ако елемента не е бил записан в празен списък
		p->next=last; // насочваш некст пойнтъра на предпоследния елемент да сочи току що въведения последен елемент
	if (first == 0) // Ако елемента е бил записан в празен списък
	{                 
		first=last; } // насочваме фръст към току що въведения единствен елемент
}
int pop(int &n) // функция за извличане на елемент от началото на списъка (който е наред от опашката да си купи маслини)
{
	if (first) // ако списъка не е празен
	{
		p=first; // насочваме кондуктора към началото
		n=first->key; //извличаме данната
		first=first->next; //насочваме началото към втория елемент, който вече е първи 
		if (first==NULL) // ако след извличането списъка се е опразнил
			last=first; // приравняваме на нула и края
		delete p; // изтриваме старото начало
		return 1; // връщаме 1, защото сме извлекли елемент
	}
	else
		return 0; // връщаме 0 защото не сме извлекли елемент, тъй като списъка е бил празен
}
int main()
{
int num;
cout<<" Vuvedete stoinost";
cin>>num;
while (num!=0)
{
push(num);
cout<<"Vuvedete stoinost";
cin>>num;
}
cout<<"Opashkata e:";
while 
	(pop(num))
	cout<<num<<"\t";
	cout<<endl;
system("pause");
return 0;
}

 

Имаш една грешка, в кода който предлагаш, поправил съм я. Опитай да си я намериш

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

Нищо лошо в излишната проверка, стига да беше написана правилно. Написано беше:

преди 7 часа, Maria11 написа:

if (first=last) { first=last; }

което е неразумно, откъдето и да се погледне.

Всъщност това е и грешката, която поправих.

Правилно е да се напише

if (first == 0)
{
	first = last;
}

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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