Основы языка С++. Викентьева О.Л. - 68 стр.

UptoLike

Составители: 

{
int key;//ключевое поле
point* pred,*next;//адресные поля
};
point*make_list()
{
int n;
cout<<"n-?";cin>>n;
point *p,*r,*beg;
p=new (point);//создать первый элемент
beg=p;//запомнить адрес в переменную beg, в которой хранится начало
списка
cout<<"key-?";cin>>p->key;//заполнить ключевое поле
p->pred=0;p->next=0;//запомнить адресные поля
for(int i=1;i<n;i++)//добавить элементы в конец списка
{
r=new(point);//новый элемент
cout<<"key-?";cin>>r->key;//адресное поле
p->next=r;//связать начало списка с r
r->pred=p;//связать r с началом списка
r->next=0;//обнулить последнее адресное поле
p=r;//передвинуть p на последний элемент списка
}
return beg;//вернуть первый элемент списка
}
void print_list(point *beg)
{
if (beg==0)//если список пустой
{
cout<<"The list is empty\n";
return;
}
point*p=beg;
while(p)//пока не конец списка
{
cout<<p->key<<"\t";
p=p->next;//перейти на следующий
}
cout<<"\n";
}
point* del_point(point*beg, int k)
{
point *p=beg;
if(k==0)//удалить первый элемент
{
beg=beg->next;//переставить начало списка на следующий элемент
if(beg==0)return 0;//если в списке только один элемент
beg->pred=0;//обнулить адрес предыдущего элемента
delete p;//удалить первый
return beg;//вернуть начало списка
}
//если удаляется элемент из середины списка
for(int i=0;i<k-1&&p!=0;i++,p=p->next);//пройти по списку либо до элемента
с предыдущим номером, либо до конца списка
         {
               int key;//ключевое поле
               point* pred,*next;//адресные поля
         };
         point*make_list()
         {
                int n;
                cout<<"n-?";cin>>n;
                point *p,*r,*beg;
                p=new (point);//создать первый элемент
                beg=p;//запомнить адрес в переменную beg, в которой хранится начало
списка
               cout<<"key-?";cin>>p->key;//заполнить ключевое поле
               p->pred=0;p->next=0;//запомнить адресные поля
               for(int i=1;i>r->key;//адресное поле
                        p->next=r;//связать начало списка с r
                        r->pred=p;//связать r с началом списка
                        r->next=0;//обнулить последнее адресное поле
                        p=r;//передвинуть p на последний элемент списка
               }
               return beg;//вернуть первый элемент списка
      }
      void print_list(point *beg)
      {
             if (beg==0)//если список пустой
             {
             cout<<"The list is empty\n";
              return;
       }
             point*p=beg;
             while(p)//пока не конец списка
             {
                      cout<key<<"\t";
                      p=p->next;//перейти на следующий
             }
             cout<<"\n";
      }
      point* del_point(point*beg, int k)
      {
             point *p=beg;
             if(k==0)//удалить первый элемент
             {
                      beg=beg->next;//переставить начало списка на следующий элемент
                      if(beg==0)return 0;//если в списке только один элемент
                      beg->pred=0;//обнулить адрес предыдущего элемента
                      delete p;//удалить первый
                      return beg;//вернуть начало списка
             }
      //если удаляется элемент из середины списка
             for(int i=0;inext);//пройти по списку либо до элемента
с предыдущим номером, либо до конца списка