Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SIAOD / Списики / Списки отчёт.doc
Скачиваний:
8
Добавлен:
20.03.2015
Размер:
110.08 Кб
Скачать

Int add_place, number;

do{

clrscr();

cout<<"Na mesto kakogo elementa dobavit'?";

cin>>add_place;

cout<<"n=";

cin>>number;

}while(add_place-1 > n || add_place <=0);

object->add( add_place, n, number);

}

}

}

else if(chose1 == 2){

if(object==NULL || n==0)

cout<<"Your list is empty\n";

else

object->output();

getch();

}

else if(chose1==3){

if(object==NULL)

cout<<"Your list is empty\n";

else{

Int add_place, number;

do{

clrscr();

cout<<"Na mesto kakogo elementa dobavit'?";

cin>>add_place;

cout<<"n=";

cin>>number;

}while(add_place-1 > n || add_place < 0);

object->add( add_place, n, number);

}

getch();

}

else if(chose1 == 4){

if(object==NULL)

cout<<"Your list is empty\n";

else{

Int del_place;

do{

clrscr();

cout<<"Which element is delete?: ";

cin>>del_place;

}while(del_place > n || del_place < 0);

object->Delete( del_place, n);

}

getch();

}

else if(chose1 == 5){

if(object==NULL)

cout<<"Your list is empty\n";

else

delete object;

object=NULL;

}

else{

delete object;

exit(1);

}

}

}

cls_list::cls_list(int n){

head=new list;

tail=NULL;

head->next=tail;

head->prev=NULL;

int i=1;

list *p, *prev;

p=head;

prev=head;

while(i<n){

cout<<"Input number: ";

cin>>p->number;

i++;

p->next=new list;

p=p->next;

p->prev=prev;

prev=prev->next;

}

cout<<"Input number: ";

cin>>p->number;

p->next=NULL;

p->prev=prev;

p->next=NULL;

tail=p->next;

}

cls_list::~cls_list(){

list *p;

while(head!=tail){

p=head;

head=head->next;

delete p;

}

}

void cls_list::add(int add_place, int &n, int number){

list *temp=new list;

temp->number=number;

if(add_place==1){

temp->next=head;

head->prev=temp;

head=temp;

}

else{

list *p, *prev_p;

p=head;

prev_p=head;

p=p->next;

for(int i=1;i<add_place-1;i++){

prev_p=prev_p->next;

p=p->next;

}

if(add_place == n+1){

prev_p->next=temp;

temp->next=tail;

temp->prev=prev_p;

}

else{

prev_p->next=temp;

temp->prev=prev_p;

temp->next=p;

p->prev=temp;

}

}

n++;

}

void cls_list::output(){

list *p=head;

while(p!=tail){

cout<<p->number<<" ";

p=p->next;

}

}

void cls_list::Delete(int del_place, int &n){

list *p;

p=head;

if(del_place == 1){

head=head->next;

head->prev=NULL;

delete p;

}

else{

p=p->next;

int i=2;

while(i != del_place){

p=p->next;

i++;

}

list *prev_p, *next_p;

prev_p=p->prev;

next_p=p->next;

if(del_place == n){

prev_p->next=NULL;

tail=prev_p->next;

}

else{

prev_p=p->prev;

next_p=p->next;

prev_p->next=next_p;

next_p->prev=prev_p;

}

delete p;

}

n--;

}

int cls_list::if_empty(){

if(head->next == NULL) return 0;

else return 1;

}

Скрины.

Двусвязный циклический.

#include<iostream.h>

#include<conio.h>

class _2svz {

private:

struct list {

int num;

list* next;

list* prev;

};

list* head,*tail;

public:

_2svz(int n);

~_2svz();

Соседние файлы в папке Списики