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

struct list
{
	int info;
	list *next;
};

void New(list* &head, list* &tail)
{
	head=new list;
	head->info=random(10);
	head->next=NULL;
	tail=head;
}

void Add(list* &tail)
{
	list *T;

	T=new list;
	T->info=random(10);
	T->next=NULL;
	tail->next=T;
	tail=T;
}

//Checks for element l in list head-tail
char Check(list *head, list *tail, int l)
{
	list *T;

	T=head;
	while (T!=tail)
	{
		if (T->info==l)
			return 1;
		T=T->next;
	}
	if (tail->info==l)
		return 1;
	return 0;
}

char Insert(list *head, list* &tail, int l, list *head1, list* &tail1)
{
	list *T, *P;
	int p=Check(head1,tail1,l);

	if (!p)
		return 0;

	T=head;
	while (T!=tail)
	{
		if (T->info==l)
		{
			tail1->next=T->next;
			T->next=head1;
			return 1;
		}
		T=T->next;
	}
	if (tail->info==l)
	{
		tail->next=head1;
		tail=tail1;
  	return 1;
	}

	return 0;
}

void Print(list *head, list *tail)
{
	list *T;

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

void main()
{
	clrscr();
	randomize();

	list *head1, *tail1;
	list *head2, *tail2;
	int i, n1, n2, L;

	printf("\nEnter number of elements in 1st list: ");
	scanf("%d",&n1);
	New(head1,tail1);
	for (i=1;i<=n1-1;i++)
		Add(tail1);
	printf("1st list: ");
	Print(head1,tail1);

	printf("\nEnter number of elements in 2nd list: ");
	scanf("%d",&n2);
	New(head2,tail2);
	for (i=1;i<=n2-1;i++)
		Add(tail2);
	printf("2nd list: ");
	Print(head2,tail2);

	printf("\nEnter L: ");
	scanf("%d",&L);

	i=Insert(head1,tail1,L,head2,tail2);
	if (i)
	{
		printf("New list: ");
		Print(head1,tail1);
	}
	else
		printf("Element not found");
	getch();
}
Соседние файлы в папке Lab3