Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
17.04.2013
Размер:
1.76 Кб
Скачать
#include"list.h"
#include<stdio.h>
#include<stdlib.h>

void New(element* &head, element* &tail, int c)
{
	head=new element;
	head->info=c;
	head->next=NULL;
	tail=head;
}

void Add(element* &tail, int c)
{
	element *T;

	T=new element;
	T->info=c;
	T->next=NULL;
	tail->next=T;
	tail=T;
}

list::list(int n, int a, int b)
{
	if (n>0)
	{
		New(head,tail,random(b-a+1)+a);
		for(int i=1;i<=n-1;i++)
			Add(tail,random(b-a+1)+a);
		num=n;
	}
	else
		num=0;
}

list::list(list &L)
{
	element *T;

	T=L.head;
	New(head,tail,T->info);
	num=1;
	while (T!=L.tail)
	{
		num++;
		T=T->next;
		Add(tail,T->info);
	}
}

list::~list()
{
	delete head;
	delete tail;
	num=0;
}

void list::print()
{
	element *T;

	T=head;
	printf("%3d",T->info);
	while (T!=tail)
	{
		T=T->next;
		printf("%3d",T->info);
	}
}

char list::AddEl(int n, int c)
{
	element* T;

	if (n>num+1)
		return 0;
	if (n==1)
	{
		T=new element;
		T->info=c;
		T->next=head;
		head=T;
	}
	else if (n==num+1)
	{
		T=new element;
		T->info=c;
		T->next=NULL;
		tail->next=T;
		tail=T;
	}
	else if (n==num+1)
	{
		T=new element;
		T->info=c;
		T->next=NULL;
		tail->next=T;
		tail=T;
	}
	else
	{
		element* P;

		T=head;
		for (int i=0;i<=n-3;i++)
			T=T->next;
		P=new element;
		P->info=c;
		P->next=T->next;
		T->next=P;
	}
	return 1;
}

list list::operator |(list &L)
{
	element *P1, *P2;

	head->info=(head->info>L.head->info)?head->info:L.head->info;
	int n=(num<L.num)?num:L.num;

	if (n>1)
	{
		P1=head;
		P2=L.head;
		for (int i=1;i<=n-1;i++)
		{
			P1=P1->next;
			P2=P2->next;
			P1->info=(P1->info>P2->info)?P1->info:P2->info;
		}
	}
	tail=P1;
	return *this;
}
Соседние файлы в папке Var05