C
CppManiac
Помогите пожалуйста, ибо всё что я читал в нэте мне не помогло, что то я по этой теме вообще нуб, задание такое:
Разработать пользовательскую библиотеку для работы с односвязным списком (использовать динамическую память). В ней реализовать следующие функции:
1. создание списка
2. добавление элементов списка (учитывать сортировку)
3. удаление элементов списка
4. сцепление двух списков в один отсортированный.
Продемонстрировать работу программы.
Мой одногруппник делал так, но спросить я у него сейчас не могу(да и объяснять он толком не умеет), всё же помогите пожалуйста, я просто не могу понять саму суть, и философию списков для каждого примера
Разработать пользовательскую библиотеку для работы с односвязным списком (использовать динамическую память). В ней реализовать следующие функции:
1. создание списка
2. добавление элементов списка (учитывать сортировку)
3. удаление элементов списка
4. сцепление двух списков в один отсортированный.
Продемонстрировать работу программы.
Мой одногруппник делал так, но спросить я у него сейчас не могу(да и объяснять он толком не умеет), всё же помогите пожалуйста, я просто не могу понять саму суть, и философию списков для каждого примера
PHP:
#include "library.h"
List *Add_HEAD(List* head,List* newNode)
{
newNode -> Next = head;
return newNode;
}
List *Add_END(List *head,List *newNode)
{
if( head == NULL)
{
return newNode;
}
else
{
List *l(head);
while(l ->Next != NULL)
l = l->Next;
l ->Next = newNode;
}
return head;
}
void Add_SORTIROVKA(List * head,List *newNode)
{
List *l(head);
while(newNode ->Data > (l->Next)->Data)
l = l->Next;
newNode ->Next = l ->Next;
l ->Next = newNode;
}
void print(List *l)
{
if( l == NULL)
cout << "Нет такой записи" << endl;
else
{
int i = 1;
while(l)
{
cout << i++ << " Элемент списка:";
cout << l -> Data << endl;
l = l -> Next;
}
}
}
void deleteList(List *head)
{
if(head != NULL)
{
while(head != NULL)
{
List *l = head -> Next;
delete head;
head = l;
}
}
}
List *deleteEL(List *head,int n)
{
if(n==0)
{
List * l = head->Next;
delete head;
return l;
}
else
{
List *l = head;
n-=1;
for ( int i = 0; i < n; i++)
{
l = l -> Next;
}
List *todel = l -> Next;
l -> Next = (l -> Next) -> Next;
delete todel;
return head;
}
}
void Sortirovka(List *head)
{
List *l = head;
int temp;
while( head != NULL)
{
l = head ->Next;
while( l != NULL)
{
if( head->Data > l->Data)
{
temp = head ->Data;
head ->Data = l ->Data;
l ->Data = temp;
}
l = l ->Next;
}
head = head ->Next;
}
}