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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2009, 22:10   #1
FoOtBaLiIsT
Новичок
Джуниор
 
Регистрация: 17.03.2009
Сообщений: 1
По умолчанию Динамические структуры данных - списки

Задание: Создать объект - однонаправленный список L1 без головного элемента.
Добавить в стандартный набор объекта ваш метод согласно варианту.
В вашем методе не могут быть использованы другие методы объекта.
Ваш метод должен быть выполнен при условии, что в списке имеется достаточное количество элементов для выполнения операции, иначе вывести сообщение о невозможности выполнения метода.
Все операции выполнять только изменением указателей на элементы.
Значения элементов задать в строке констант или в диалоговом режиме.
Проверить размеры свободной памяти до выполнения программы и после
функцией _memavl(), эти значения должны совпадать.
Обязательно выводить список на экран до и после выполнения заданной операции.

Например при удалении второго элемента:

Before Memaval = 280960
12.34 -5.67 431.32 98.46 -->|
12.34 431.32 98.46 -->|
After Memaval = 280960

Возможный вид метода:
int Method(<список параметров>) {...};
Функция возвращает 1, если выполнение прошло успешно и 0 в противном случае.


Имееется код программы, которая выполняет следующее:
Если среди первых трех элементов нет равных, то упорядочить их по возрастанию, иначе в начало списка вставить номера равных элементов.

Необходимо переделать код так чтобы, выполнялось решение задачи:
Поменять местами первый и четвертый элементы, если они не равны, иначе на 2-е место вставить сумму этих элементов.

Вот код программы:

Код:
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <iostream.h>
# include <malloc.h>
# include <math.h>
# define List struct list
List { int Dn;
List*Nx;};
//---prototype---
int Empty (List**p) {return (*p==NULL);}

void AddHead (List**p, int D)
 {List*q=new(List);
 q->Dn=D; q->Nx=*p;
 *p=q;
 };

void AddEnd (List**p, int D)
 {List*q=new(List);
 q->Dn=D; q->Nx=NULL;
 List*t=*p;
 if(*p) {while (t->Nx) {t=t->Nx;};
  t->Nx=q;}
 else *p=q;
 };

void Display(List**p)
 { List*t=*p;
 while (t) {cout<<t->Dn<< " ";t=t->Nx; };
  cout<<"\n";
 };

void DelFirst(List**p)
 { List*q=*p;
 if(*p)
  { *p=q->Nx; delete (q);};
 };


void Done(List**p)
 { while (!Empty(p)) DelFirst(p);};
  int mymethod(List**p) {List*t=*p; int k=0;
 while (t) {t->Dn;t=t->Nx;k++;};
 if (k<3) return 0;
 List*r=*p;
 List*q=r->Nx;
 List*s=q->Nx;
 if (((r->Dn)==(q->Dn)) || ((q->Dn)==(s->Dn)) || ((r->Dn)==(s->Dn)))
  {if ((r->Dn)==(q->Dn))
   {List*u=new(List);
   u->Dn=2;u->Nx=r;
   *p=u;
   List*y=new(List);
   y->Dn=1;y->Nx=u;
   *p=y;
  };
  if ((q->Dn)==(s->Dn))
   {List*u=new(List);
   u->Dn=3;u->Nx=r;
   *p=u;
   List*y=new(List);
   y->Dn=2;y->Nx=u;
   *p=y;
  };
  if ((r->Dn)==(s->Dn))
   {List*u=new(List);
   u->Dn=3;u->Nx=r;
   *p=u;
   List*y=new(List);
   y->Dn=1;y->Nx=u;
   *p=y;
  };
  }
  else
   {if ((r->Dn)>(q->Dn))
    {List*u=new(List); (u->Dn)=(r->Dn);(r->Dn)=(q->Dn);(q->Dn)=(u->Dn);};
    if ((q->Dn)>(s->Dn))
    {List*u=new(List); (u->Dn)=(q->Dn);(q->Dn)=(s->Dn);(s->Dn)=(u->Dn);};
    if ((r->Dn)>(s->Dn))
    {List*u=new(List); (u->Dn)=(r->Dn);(r->Dn)=(s->Dn);(s->Dn)=(u->Dn);};
    if ((r->Dn)>(q->Dn))
    {List*u=new(List); (u->Dn)=(r->Dn);(r->Dn)=(q->Dn);(q->Dn)=(u->Dn);};
   }; return 1;
 };
//----------------------------------
void main()
 {clrscr();
 cout<<_memavl()<<endl;
 List*L1=NULL;
 int b=0;
 for(int i=1; i<5; i++)
 {cout<<i<<"="; cin>>b;
 AddEnd(&L1,b);}
 Display(&L1);
 if (mymethod(&L1)) cout<<"OK!\n"<<"--------------------------\n";
  else cout<<"NO!\n";
 Display(&L1);
 Done(&L1);
 cout<<_memavl()<<endl;
 getch();
}

Помогите пожалуйста))

Последний раз редактировалось FoOtBaLiIsT; 18.03.2009 в 22:18.
FoOtBaLiIsT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамические структуры данных на языке си Grizzzli Помощь студентам 1 28.12.2008 01:45
сохранение структуры (динамические списки очередей) в файле AlenaZ Помощь студентам 2 09.06.2008 20:14
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ shvarz Общие вопросы C/C++ 1 10.05.2008 19:48
Динамические структуры данных в Паскале ЯншинаВера Помощь студентам 2 30.03.2008 13:10