Ðåôåðàòû. Îáúåêòíî-îðèåíòèðîâàíîå ïðîãðàìèðîâàíèå íà Ñ++

8.                Çàïèñàòü ñïèñîê â ôàéë, óíè÷òîæèòü åãî è âûïîëíèòü ïå÷àòü (ïðè ïå÷àòè äîëæíî áûòü âûäàíî ñîîáùåíèå "Ñïèñîê ïóñòîé").

9.                Íàïèñàòü ôóíêöèþ äëÿ âîññòàíîâëåíèÿ ñïèñêà èç ôàéëà.

10.            Âîññòàíîâèòü ñïèñîê è ðàñïå÷àòàòü åãî.

11.            Óíè÷òîæèòü ñïèñîê.


Âàðèàíòû çàäàíèé

14.            Çàïèñè â ëèíåéíîì ñïèñêå ñîäåðæàò ïîëå äàííûõ çâåíà  òèïà *char(ñòðîêà ñèìâîëîâ). Ñôîðìèðîâàòü äâóíàïðàâëåííûé ñïèñîê. Óäàëèòü èç íåãî Ê ýëåìåíòîâ ñ óêàçàííûìè íîìåðàìè. Äîáàâèòü Ê ýëåìåíòîâ ñ óêàçàííûìè íîìåðàìè.

Ïðîãðàìà:

#ifndef list_h

#define list_h


class list

{

                private:

                               struct element

                               {

                                               char* info;

                                               element* up;

                                               element* down;

                               };

                               element *first, *last, *current;

                public:

                               list();                        //constructor

                               ~list();                       //destructor

                               void del_list();                  //ochishchajet spisok

                               void init_list(int,char*);     //initsializatsia spiska fonarhym metodom

                               void print_list();             //vyvod na ekran spiska

                               int  current_element(int);     //zdelat element s nomerom "int" tekushchim, vernetsa 0;

                                                                                                                                                             //Esli doidem do kontsa spiska,to vernetsa nomer poslednego elementa,kotoryi i budet tekushchim

                               int  next_element();           //sdelat tekushchim sledujushchiy element tekuschuego

                               int  previous_element();       //sdelat tekushchim predydushchiy element tekuschuego

                               int num_current();             //nomer v spiske tekushchego elementa

                               char* read_element(int &);     //prochitat element s nomerom; Robe jogo tekushchim

                               char* read_element();          //prochitat tekushchiy element

                               void add_element(char*, int &);//dobavit element na nomer "int"; Robe novyi element tekushchim

                               void add_after(char*);         //dobavit element posle tekushchego; Robe novyi element tekushchim

                               void add_before(char*);         //dobavit element do tekushchego; Robe novyi element tekushchim

                               void del_element();            //udalit tekushchiy element; Robe sleduushchiy element tekushchim

                               void del_element(int &);      //udalit element z nomerom "int"; Robe sleduushchiy element tekushchim

                               int  fput_list(char*);         //zapisat spisok v fail s imenem char*

                               int  fget_list(char*);         //vostanovit spisok iz faila s imenem char*

                               int num_list();                //kol-vo zvenjev u spiska

};


#endif


#ifndef list__h

#define list__h

#include "list.h"

#include <iostream.h>


list::list()

{

                               current=last=first=NULL;

};


void list::add_after(char* s)

{

                if (current==NULL)

                {

                               current=new element[1];

                               current->info=new char[strlen(s)+1];

                               strcpy(current->info,s);

                               current->up=current->down=NULL;

                               first=last=current;

                               return;

                };

                if (current==last)

                {

                               last=new element[1];

                               last->info=new char[strlen(s)+1];

                               strcpy(last->info,s);

                               last->down=NULL;

                               last->up=current;

                               current->down=last;

                                current=last;

                               return;

                };

                //put in buffer adress down

                last->down=current->down;

                current->down=new element[1];

                current->down->up=current;

                current=current->down;

                current->down=last->down;

                //clear buffer

                last->down->up=current;

                last->down=NULL;

                current->info=new char[strlen(s)+1];

                strcpy(current->info,s);

                return;

};


void list::add_before(char* s)

{

                if (current==NULL)

                {

                               add_after(s);

                               return;

                };

                if (current==first)

                {

                               first=new element[1];

                               first->up=NULL;

                               first->down=current;

                               current=current->up=first;

                               first->info=new char[strlen(s)+1];

                               strcpy(first->info,s);

                               return;

                };

                first->up=current->up;

                current->up=new element[1];

                current->up->down=current;

                current=current->up;

                current->up=first->up;

                first->up->down=current;

                first->up=NULL;

                current->info=new char[strlen(s)+1];

                strcpy(current->info,s);

                return;

};


void list::add_element(char* s, int &k)

{

                int i;

                i=current_element(k);

                if ((i<k)&&(i!=0))

                {

                               cout<<"V spiske vsego "<<i<<" elmentov. Po etomu vmesto "<<k<<" nomera, functsia dobavit info elementa na "<<i+1<<"-e mesto(poslednee v spiske)!!!\n";

                               k=i+1;

                               add_after(s);

                };

                if(i==0)

                               add_before(s);

                return;

};


void list::del_element()

{

                if (first==NULL)

                {

                               cout<<"Nemogu udalit element so spiska. Spisok pust.\n";

                               return;

                };

                if (current==first)

                {

                               if (current==last)

                               {first=last=NULL;}

                               else

                               {

                                               first=current->down;

                                               first->up=NULL;

                               };

                               delete[]current->info;

                               delete[]current;

                               current=first;

                               return;

                };

                if (current==last)

                {

                               last=current->up;

                               last->down=NULL;

                               delete[]current->info;

                               delete[]current;

                               current=last;

                               return;

                };

                last->down=current->down;

                current->up->down=current->down;

                current->down->up=current->up;

                delete[]current->info;

                delete[]current;

                current=last->down;

                last->down=NULL;

                return;

};


void list::del_element(int &k)

{

                int i=current_element(k);

                if ((i<k)&&(i!=0))

                {

                               cout<<"V spiske vsego "<<i<<" elmentov. Po etomu vmesto "<<k<<" elementa, functsia udalit "<<i<<" element!!!\n";

                               k=i;

                };

                del_element();

                return;

};


list::~list()

{

                del_list();

};


void list::del_list()

{

                while (last!=first)

                {

                               current=last;

                               delete [] last->info;

                               last=last->up;

                               delete [] current;

                };

                if (first) delete [] first->info;

                delete[]first;

                current=first=last=NULL;

                return;

};


//current ostaetsa netronutym


int list::num_list()

{

                if(first==NULL) return 0;

Ñòðàíèöû: 1, 2, 3, 4



2012 © Âñå ïðàâà çàùèùåíû
Ïðè èñïîëüçîâàíèè ìàòåðèàëîâ àêòèâíàÿ ññûëêà íà èñòî÷íèê îáÿçàòåëüíà.