#pragma hdrstop #include #include #include struct tlist //стуктура двунаправленного списка { int data; tlist* next; tlist* prev; }; typedef tlist* plist; //тип - указатель на список plist pleft,pright; //указатели на первый и последний элементы списка //--------------------------------------------------------------------------- void createlist(int n) { //создание списка из n-элементов plist elt, prev_elt; pleft=pright=prev_elt=NULL; //начальные условия for(int i=0;i>elt->data; elt->next=NULL; pright=elt; if (i==0) pleft=elt; //если первый элемент elt->prev=prev_elt; if (i!=0) prev_elt->next=elt; //если не первый элемент prev_elt=elt; } } void viewlist() //вывод значений списка на экран { for(plist elt=pleft;elt!=NULL;elt=elt->next) cout<<"data: "<data<<"\n"; } void addtoleft() //добавление элемента слева { plist elt, first_elt; first_elt=pleft; //указатель на первый элемент списка elt=new tlist; cout<<"input data: "; //заполняем данные cin>>elt->data; elt->prev=NULL; pleft=elt; elt->next=first_elt; first_elt->prev=elt; } void addtoright() //добавление элемента справа { plist elt, last_elt; last_elt=pright; //указатель на последний элемент списка elt=new tlist; cout<<"input data: "; //заполняем данные cin>>elt->data; elt->next=NULL; //включаем элемент в список pright=elt; elt->prev=last_elt; last_elt->next=elt; } #pragma argsused int main(int argc, char* argv[]) { createlist(3); viewlist(); addtoleft(); addtoright(); viewlist(); getch(); return 0; }