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

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


Здравейте колеги :) . Нужна ми е помощ за следната задача :Да се състави функция за изключване на всички срещания на даден елемент К от кръгов едносвързан (двусвързан) списък с известен указател за вход. Благодаря предварително !

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


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

#include <iostream>
using namespace std;

struct node
{
	int data;
	node* next;
	node* previous;
};

node* headtail = 0;
node* conductor = 0;
node* monductor = 0;

void push(int data)
{
	node* mode;
	mode = new node;
	mode->data = data;
	if (headtail == 0)
	{
		headtail = mode;
		mode->next = headtail;
		mode->previous = headtail;
	}
	else
	{
		mode->next = headtail;
		mode->previous = headtail->previous;
		headtail->previous->next = mode;
		headtail->previous = mode;
	}
}

void popall(int data)
{
	if (headtail == 0) return;
	conductor = headtail->next;
	for (;;)
	{
		if (conductor == headtail)
		{
			if (conductor->data != data) return;
			if (conductor->next == headtail)
			{
				headtail = 0;
				delete conductor;
				return;
			}
			conductor->previous->next = conductor->next;
			conductor->next->previous = conductor->previous;
			headtail = conductor->next;
			delete conductor;
			return;
		}
		if (conductor->data == data)
		{
			conductor->previous->next = conductor->next;
			conductor->next->previous = conductor->previous;
			monductor = conductor->next;
			delete conductor;
			conductor = monductor;
			continue;
		}
		conductor = conductor->next;
	}
}

void print(node* headtail)
{
	if (headtail == 0)
	{
		cout << "The list is empty.";
		return;
	}
	cout << headtail->data << " ";
	for (conductor = headtail; conductor->next != headtail; conductor = conductor->next)
	{
		cout << conductor->next->data << " ";
	}
}

int main()
{
	int i;
	for (i = 1; i < 21; i++)
	{
		push(i % 5);
	}
	popall(4);
	print(headtail);
	return 0;
}

 

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


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

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

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

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

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

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

Вход

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

Вход


×

Информация

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