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

Тема в разделе "Общие вопросы по С и С++", создана пользователем CppManiac, 28 май 2010.

  1. CppManiac

    CppManiac Гость

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

    abdyla_v Гость

  3. CppManiac

    CppManiac Гость

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

Поделиться этой страницей