Ноя
11

Безымянный 109473




  • То для чего создавался журнал или первый пост

  • Солнечный удар!


  • Время от времени буду выкладывать исходники для с++.
    Просто классы, которые мне пришлось писать для образовательных целей.
    Это не программы, это просто подключаемые файлы.

    Введите содержимое врезки#include <conio.h>
    #include <fstream.h>
    #include <stdio.h>
    //*************************СТАНДАРТНЫЕ СПИСКИ********************************   
    /*
    Описание:
    Класс CNode.
    Конструкторы:
    CNode() - Создание пустого списка
    CNode(int;) - Создание списка с созданием первого элемента.
    Функции
    AddNew(int) Добавить новый в хвост
    PrintOnScreen() Вывести весть список на экран
    PrintInFile(char[ ])Вывести в файл с заданным адресом (например PrintInFile("d:\example.txt") )
    DeleteEl(int) Удалить элемент с заданным значением. В случае, если удалень хоть один элемент возвращает 1, в противном - 0
    ChekEl(int) проверить существование элемента с заданым значением. 1 - сушествует, 0 - нет.

    ReturnHead() Возвращает адрес головы списка (иногда надо, но лучше не пользоваться)
    */

    class node
    {
    public:
        int val; // указатель на массив значений. Указатель - что бы можно было задавать сколько угодно значений.
        int *AddVal;
        node *next;
       
        node(int key)
        {val=key; next=NULL;}
       
        node(int key, node* tnext)
        {val=key;next=tnext;}
       
        node(int key, int AV, node* tnext)
        {AddVal=new int; val=key; AddVal=AddVal; next=tnext;}
       
        node(int key, int NumOfVal)
        {if(NumOfVal>0){val=key; AddVal=new int[NumOfVal];next=NULL;} else{val=key; next=NULL;}}
       
         void InitAddVals(int N); // N - кол-во элементов в массиве доп. значений.
    };

    class CNode
    {
    public:
        //конструкторы
        CNode()
        {head=NULL;}
        CNode(int key)
        {head=new node(key,NULL);}
        //~CNode();
        //функции
        node* AddNew(int key);
        void PrintOnScreen();
        void PrintToFile(char path[]);
        int Delete(int key); //1 - если что-то удалил, 0 - если нет.
        int Chek(int key);
        void ReadFromFile(char path[]);
        node* ReturnHead();
    protected:
        node* head;
        node* AddElement(int val,node *BeyEl); //если NULL - добавлять в начало списка
    };

    //------------------------------------------------Functions---------------------------------------------------------------
    node *CNode::AddElement(int val,node *BeyEl) //Добавить элемент после заданного
    {
        if(BeyEl!=NULL)
        {
            BeyEl->next=new node(val,BeyEl->next);
            return BeyEl->next;
        }
        else
        {
            head = new node(val, head);
            return head;
        }

    }
    //--------------------------------------------------------------------------------------------------------------------------------

    void CNode::PrintOnScreen() // Вывести список на экран
    {
        node* p;
        p=head;
        if(head==NULL) {printf("empty"); return;}
        printf("\n");
        while (p!=NULL)
        {
            printf("%d;",p->val);
            p=p->next;
        }
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    int CNode::Delete(int key)
    {
        node *p=head,*n;
        if(head->val==key){n=head; head=head->next; delete(n); return 1;}
        while(p->next!=NULL)
        {
          if(p->next->val==key){n=p->next->next; delete(p->next); p->next=n; return 1;}
          p=p->next;
        }
       
        return 0;
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    node *CNode::AddNew(int key)
    {
     node *p=head;
     if(p!=NULL)
      while(p->next!=NULL) p=p->next;
     return AddElement(key,p);
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    void CNode::PrintToFile(char path[])
    {
        node* p;
        p=head;
        ofstream toFile (path);
        while (p!=NULL)
        {
            toFile<<p->val<<";";
            p=p->next;
        }
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    node *CNode::ReturnHead()
    {
        return head;
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    int CNode::Chek(int key)
    {
      node* p = head;
      while(p!=NULL)
      {
        if(p->val==key) return 1;
        p=p->next;
      }
      return 0;
    }
    //--------------------------------------------------------------------------------------------------------------------------------

    void CNode::ReadFromFile(char path[])
    {
     int b;
     ifstream fromFile(path);
     while(fromFile>>b)
            AddNew(b);
    }

    void node::InitAddVals(int N)
    {
      AddVal=new int[N];
      for(int i=0;i<N;i++)
       AddVal[i]=0;
    }












































































































































  • То для чего создавался журнал или первый пост

  • Солнечный удар!



  • Социальные сети

    Рубрики

    Последние записи