Помогите разобратся со списком

  • Автор темы CppManiac
  • Дата начала
C

CppManiac

#1
Помогите пожалуйста, ибо всё что я читал в нэте мне не помогло, что то я по этой теме вообще нуб, задание такое:
Разработать пользовательскую библиотеку для работы с односвязным списком (использовать динамическую память). В ней реализовать следующие функции:
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;
}
}
 
C

CppManiac

#3
ок спасибо, а как это для демонстрации связать? допустим ввод и вывод списка для
void slstore(struct address *i,
struct address **last)
{
if(!*last) *last = i; /* первый элемент в списке */
else (*last)->next = i;
i->next = NULL;
*last = i;
}