Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2011, 13:38   #1
Nelson1992
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 30
Вопрос линейный список

Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера;

Вот программа моего однокурсника, там задание удалить элемент после заданного, и заменить новый элемент на место элемента с заданным номером.
Мне надо переделать под мою программу...

Код:
#include<iostream>
using namespace std;
struct node
{
  int  elem;
  node *sled;
};
 class Spisok {
   private:
     node *phead, *Res;
   public:
     Spisok() {phead=new(node);Res=NULL;}
     ~Spisok() {delete phead;}
     void POSTROENIE ();
     void VYVOD ();
     node *POISK (int);
     void YDALE ();
     void DOBAV();
     void OCHISTKA();
 };
 
int main ()
{
  system("cls");
  Spisok A;
  int   el;
  node *Res_Zn;
 
  A.POSTROENIE ();
  A.VYVOD ();
  cout<<"\nВведите элемент звена, после которого ";
  cout<<"осуществляется удаление:\n";
  cin>>el;
  Res_Zn=A.POISK (el);
  if  (Res_Zn!=NULL && (*Res_Zn).sled!=NULL)
    {A.YDALE (); A.VYVOD ();}
  else  cout<<"Звена с заданным элементом в списке нет!";
  cout<<"\nВведите элемент звена, на место которого ";
  cout<<"осуществляется добавление:\n";
  cin>>el;
  Res_Zn=A.POISK (el);
  if  (Res_Zn!=NULL && (*Res_Zn).sled!=NULL)
    {A.DOBAV (); A.VYVOD ();}
  else  cout<<"Звена с заданным элементом в списке нет!";
  A. OCHISTKA();
}
 
void Spisok::POSTROENIE ()
//Построение однонаправленного списка с заглавным звеном.
//phead -указатель на заглавное звено
{
  node *t;
  int  el;
 
  t = phead; (*t).sled = NULL;
  cout<<"Вводите элементы звеньев списка: \n";
  cin>>el;
  while  (el!=0)
  {
    (*t).sled = new (node);
    t = (*t).sled; (*t).elem = el; (*t).sled = NULL;
    cin>>el;
  }
}
 
void Spisok::VYVOD ()
//Вывод содержимого однонаправленного списка.
//phead - указатель на заглавное звено.
{
  node *t;
 
  t = phead; t = (*t).sled;
  cout<<"Список: ";
  while  (t!=NULL)
  {
         cout<<(*t).elem <<" ";
    t = (*t).sled;
  }
}
 
 node *Spisok::POISK (int el)
//Поиск звена с элементом el в списке, заданном указателем phead.
//В случае успешного поиска в Res находится адрес искомого звена  
//списка. В противном случае Res содержит NULL.
{
  node *t;
 
  Res = NULL; t = phead; t = (*t).sled;
  while  (t!=NULL && Res==NULL)
    if  ((*t).elem==el)  Res = t;
    else  t = (*t).sled;
  return Res;
}
 
void Spisok::YDALE ()
//Удаление звена, расположенного после звена,
//на которое указывает ссылка Res. 
{
  node *q;
  q = (*Res).sled;
  if  (q!=NULL)
  {
    //Если звено, после которого нужно удалять,
    //не является последним, то:
    (*Res).sled = (*(*Res).sled).sled; delete q;
  }
  else
    cout<<"Звено с заданным элементом - последнее!\n";
}
 
void Spisok::DOBAV ()
//Добавление звена, на место того на который указывает ссылка Res.
{
  node *q;
  int  el;
  q = Res;
  cout<<"Вводите добавляемый элемент : ";
  cin>>el;
    (*q).elem = el;

}
 
void Spisok::OCHISTKA ()
//Удаление однонаправленного списка из памяти.
// phead - указатель на заглавное звено списка.
{
  node *q,*q1;// Рабочие указатели.
 
  q = phead;
  q1 = (*q).sled; // Указатель q1 "опережает" указатель q.
  while (q1!=NULL)
  { q = q1; q1 = (*q1).sled; delete q;}
}
Nelson1992 вне форума Ответить с цитированием
Старый 26.11.2011, 01:40   #2
Nelson1992
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 30
По умолчанию

Помогите кто-нибудь....
Nelson1992 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++,линейный список katerunechka Помощь студентам 0 08.10.2011 11:38
линейный двунаправленный список мария герасимова Паскаль, Turbo Pascal, PascalABC.NET 1 22.09.2011 19:04
Линейный список doter Общие вопросы C/C++ 1 20.02.2011 21:36
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00