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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 01:16   #1
phantom4eg
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 39
Печаль

Ребят! Выручите! помогите написать! Сам пытался что то сделать - не работает ничего Я не хочу это позорище выкладывать

однонаправленный список с элементами типа char. Дополнительно перегрузить следующие операции:
[]  доступ к элементу в заданной позиции, например:
int i; char c;
list L;
c=L[i];
+  объединить два списка;
= =  проверка на равенство.

Вот что смог сам:
Код:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>  
class edit_list
{
	struct list
	{
		char inf ;
		list *next ;
	} ;
   public:
		int num ;
		list *p, *top ;
		int i ;

		edit_list() ;
		~edit_list() {} ;
		edit_list& operator==(const edit_list &) ;
		void print() ;
} ;

edit_list::edit_list()
{
	cout << "Vvedite kolichestvo elementov: " ;
	cin >> num ;
top=new list ;
		cout << "1 element spiska: " ;
		cin >> top->inf ;
		top->next = NULL ;
		p = top ;
		for(i = 2; i <= num; i++)
		{
			p->next = new list ;
            p = p->next ;
            cout << i << " element spiska: " ;
            cin >> p->inf ;
            p->next = NULL ;
		}
} ;



edit_list& edit_list::operator==(const edit_list &other)
{
	p = top ;
	list *q = other.top ;
	int pc = 0 ;
	int qc = 0 ;
	bool flag ;

	while (p != NULL)
	{
		pc++ ;
		p = p->next ;
	}

	while (q != NULL)
	{
		qc++ ;
		q = q->next ;
	}

	if (qc == pc)
		flag = true ;
	else
		flag = false ;

	p = top ;
	q = other.top ;
	while (p != NULL)
	{
		if (!flag) break ;
		if (p->inf != q->inf)
		{
			flag = false ;
			break ;
		}
		p = p->next ;
		q = q->next ;
	}
	cout << "\nPereopredelennyj operator == " ;
	if (flag)
		cout << "\nSpiski ravny" ;
	else
		cout << "\nSpiski ne ravny" ;
return(*this) ;
}


void edit_list::print()
{
	cout << "Print\n" ;
	p = top ;

	while (p != NULL)
	{
		cout << p->inf << " " ;
		p = p->next ;
	} ;
} ;

void main()
{
	edit_list a ;

	cout << "\nSpisok A:\n" ;
	a.print() ;
   cout << endl ;
	edit_list b ;
   cout <<	"\nSpisok B:\n" ;
	b.print() ;
   b==a ;
   getch();
}

Последний раз редактировалось Stilet; 31.05.2010 в 07:47.
phantom4eg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек в С++ skiffter Помощь студентам 3 26.03.2010 09:57
стек. Nelson1992 Фриланс 2 16.02.2010 00:28
Стек lucky Паскаль, Turbo Pascal, PascalABC.NET 2 12.05.2009 18:35
стек в PM vladimir0108 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 08.01.2009 01:18
Стек Foky Паскаль, Turbo Pascal, PascalABC.NET 8 13.05.2008 18:39