Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Организанция ОДС с пояснениями

.txt
Скачиваний:
7
Добавлен:
07.06.2018
Размер:
2.37 Кб
Скачать
//Организанция динамического однонаправленного списка (ОНС)
//ИСПОЛЬЗОВАТЬ ПРИ ВЫПОЛНЕНИИ ЛАБОРАТОРНЫХ РАБОТ
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>

using namespace std;

#define N 100
		//создание структуры "List"
struct List
{
	int data;
	List *Next;
}*Head;

////создание HEAD
//void Create(int a, List, &**Head) //"-"
//{
//	(*Head)=new List();
//	(*Head)->data=a;
//	(*Head)->Next=NULL;
//}

		//добавление элемента в HEAD
void add_Head (int a, List **Head) // "+"
{
	if (!(*Head)) 
	{
	(*Head)=new List();
	(*Head)->data=a;
	(*Head)->Next=NULL;
	}
	else
	{
	
	List *Elem1;
	Elem1=new List();
	Elem1->data=a;
	Elem1->Next=NULL;
	Elem1->Next=(*Head);
	(*Head)=Elem1;
	}
}
// МЕТОДЫ add_last и get_head создают очередь из ОНС

		//извлечение из LAST
void add_last(int a, List **Head)
{
	List *Elem1; //создание элемента1
	Elem1=new List();
	Elem1->data=a;
	Elem1->Next=NULL;
	//создание нового элемента2 (копия HEAD)
	//для храния ссылок на предыдущие элементы
	List *Head2=(*Head);
	while (Head2->Next!->NULL)
	{
		Head2 = Head2->Next;
	}
	Head2->Head2=Elem1;
}
		//извлечение из HEAD
int get_head (List **Head)
{
	
	int a = (*Head)->data; //указатель на структуру
	(*Head) = (*Head)->Next;
	return a;
}
		//извлечение из LAST
int get_last (List **Head)
{
	int a;
	List *Head2=(*Head);
	while (Head2->Next->Next!->NULL)
	{
		Head2 = Head2->Next;
	}
	a=Head2->Next->data;
	Head2->Next=NULL
	return a;
}
//счетчик элементов
int count_List(List **Head)
{
	int i=0;
	if (!(*Head)) return 0;
	else
	{
	List *Head2=(*Head);
	while (Head2->Next->Next!->NULL)
	{
		Head2 = Head2->Next;
		i++;
	}
	return i;
	}
}
		//Расширение "+"
void main()
{
	//создание стека на базе ОНС
	//счетчик элементов до добавления
	add_Head (1,&Head);
	add_Head (2,&Head);
	add_Head (3,&Head);
	add_Head (4,&Head);
	add_Head (5,&Head);
	//cout<<get_head(&Head)<<endl; //извлечение элемента из "ГОЛОВЫ / HEAD"
	//cout<<get_head(&Head)<<endl;
	cout<<"Count"<<count_List(&Head)<<endl; //5 //счетчик элементов до извлечения
	cout<<get_last(&Head)<<endl; //5	//извлечени элемента из "LAST" 
	cout<<get_last(&Head)<<endl; //1
	cout<<"Count"<<count_List(&Head)<<endl; //3	//счетчик элементов после извлечения
	system ("pause");
}