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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Функция за изтриване на елемент на свързан списък

Featured Replies

Здравейте ! Трябва ми функция за изтриване на елемент на едносвързан списък по даден критерии (по точно по номер). Функцията да е написана на С. Благодаря предварително !

Трябва да си я коригираш за твоя конкретен случай, но принципа е следния:

typedef struct Node {
	// ...
	int num;
	node * next;
} node;

// ...

node * delete_node(node * head, int const target_num)
{
	if (!head) return NULL;

	node * current = head, * previous = NULL;
	while (current) {
		if (current->num == target_num) {	// if HEAD is target node.
			if (current == head) {
				head = head->next;
				previous = NULL;				
				free(current);
				break;
			}
			if (previous) previous->next = current->next;
			free(current);
			break;
		}
		previous = current;
		current = current->next;
	}

	return head;
}
Не съм я тествал, писах я под Notepad! Кажи дали работи!

Функцията трие един елемент и спира, ако искаш да трие всички, които отговарят на дадения критерий, трябва да се коригира!

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

Това е едносвързан списък, винаги вървим от началото (главата) към края (опашката)!

Алгоритъмът ми ли не работи, когато трябва да се изтрие последния Node? Длъжен съм да отбележа, че на next указателят на последния Node винаги се присвоява NULL за да сме сигурни кога сме стигнали края на списъка, а не го оставяме неинициализиран! if (current == head) ... частта се оправя случая, когато изтриваме първия Node (главата) от списъка! Тогава трябва да върнем новата глава на списъка, която вече е вторият елемент, за да могат и другите функция да работят от новото начало! За това и моя вариант на функцията връща главата на списъка, вслучай че тя е нова!

Дай да видим принтиращата функция, къде й е проблемът! Ако искаш пиши в другата си тема!

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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