Добавил:
kipetilnik
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организанция ОДС с пояснениями
.txt//Организанция динамического однонаправленного списка (ОНС)
//ИСПОЛЬЗОВАТЬ ПРИ ВЫПОЛНЕНИИ ЛАБОРАТОРНЫХ РАБОТ
#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");
}
Соседние файлы в предмете Объектно ориентированное программирование