Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Динамические структуры данных - списки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление машинной точности http://www.cyberforum.ru/cpp-beginners/thread26628.html
Помогите пожалуйста!!! Есть такая задачка/ Требуется найти наибольшее а , такое что 1+а=1, кто-нибудь знает, как это можно сделать?
C++ массив строк дан массив строк: 1. как обратиться к определённому символу? например, text выдаст символ, находящийся на 3 строке на второй позиции 2. как строку разбить на слова? и вырезать те из них, которые... http://www.cyberforum.ru/cpp-beginners/thread26625.html
Необходимо из данных файла создать список положительных чисел C++
есть вот такие задачки, которые нужно оформить на с++ Первая: В одном файле задан набор чисел. Необходимо из данных файла создать список положительных чисел. Реализовать для списка процедуру...
C++ Анаграмма
ПОМОГИТЕ РЕШИТЬ ПЛИИИЗ!!!!! Пусть задано некоторое слово, состоящее из букв английского алфавита длинной не более 80 символов (например, “WORD”). Рассмотрим набор возможных перестановок, состоящих...
C++ Doxygen из определённой папки http://www.cyberforum.ru/cpp-beginners/thread26604.html
Есть папка include. Doxyfile находиться в не папки. Что надо поменять в файле, чтоб он делал документацию, используя файлы в папке? INCLUDE_PATH не катит, тк на другом компе придёться снова менять...
C++ _itoa() и двумерные массивы #include <iostream> using namespace std; void main() { int a={1,2,3,4,5}; char b; for(int i=0;i<5;i++) { подробнее

Показать сообщение отдельно
lotoart
Сообщений: n/a

Динамические структуры данных - списки - C++

18.03.2009, 22:00. Просмотров 1557. Ответов 0
Метки (Все метки)

Задание: Создать объект - однонаправленный список 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();
}

Помогите пожалуйста))
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru