Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 18:17   #1
whh
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 14
По умолчанию Списки (С++)

Добрый вечер, возник такой вопрос
Препод дала исходники:

Код:
  //вставка в середину списка
	//	q->right=current->right;
	//	current->right->left=q;
	//	current->right=q;
	//	q->left=current;
	//	current=q;
q - наш элемент для вставки

current->right->left=q; что обозначает вот эта строчка?

коды классов:
Код:
class Node
{
private:
	Cstreet Item; // элемент класса улица
	Node *right;
	Node *left;
	friend class List;
public:
	void set(Cstreet It1)
	{
		Item = It1;
	}
    Cstreet get(){return Item;}
};

class List
{
private:
	Node * head;
	Node * tail;
	Node * current;
public:
	static int count;
	List(Cstreet It1)
	{
		head=new Node;
		head->set(It1);
		head->right=0;  
		head->left=0;
		tail=head;
		current=head;
		count++;
	}
	~List()
	{
		Node *h=head;
		while(h!=0)
		{
			head=head->right;
			delete h;
			h=head;
		}
    }
	void Add(Cstreet);
	void Add_S(Cstreet, int);
	void Show();
	void Show1();
};
whh вне форума Ответить с цитированием
Старый 10.11.2012, 18:46   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

current->right->left=q;
можно расписать как
next=current->right;//получаем следующий элемент
next->left=q;//и изменяем у этого элемента обратную привязку, т.е. он теперь будет ссылаться не на current, а на промежуточный q
eoln вне форума Ответить с цитированием
Старый 10.11.2012, 18:49   #3
whh
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 14
По умолчанию

Спасибо большое, разобрался..
whh вне форума Ответить с цитированием
Старый 10.11.2012, 20:19   #4
whh
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 14
По умолчанию

Помогите пожайлуста с функцией удаления элемента списка

Код:
void List::Delete_S(int K)
{
	Node *q = new Node;
	current = head;
	for(int i=0; i<K; i++)
	{
		current=current->right;
	}
	current->left->right=current->right;
	current->right = current->right->right;
	delete q;
}
не удаляет нормально предпоследний элемент списка, первый и последний

Последний раз редактировалось whh; 10.11.2012 в 20:30.
whh вне форума Ответить с цитированием
Старый 11.11.2012, 00:20   #5
whh
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 14
По умолчанию

Проблема решена, добавил пару if-ов, и исправил немного код
whh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки в Си. Multiman Помощь студентам 3 03.06.2011 18:26
Списки. Pavel_4a-4anax Помощь студентам 0 01.06.2011 15:38
Списки. С++ RomanHouse Общие вопросы C/C++ 0 29.05.2011 21:38
Списки в С++ zoluxa Помощь студентам 13 30.03.2010 23:37