Форум программистов, компьютерный форум 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++
есть вот такие задачки, которые нужно оформить на с++ Первая: В одном файле задан набор чисел. Необходимо из данных файла создать список положительных чисел. Реализовать для списка процедуру добавления элемента после заданного. Значение вставляемого элемента и место вставки указаны во втором файле. Вторая: Определить класс, в котором описаны следующие поля: С-строка из 25 символов и целое...
C++ Анаграмма
ПОМОГИТЕ РЕШИТЬ ПЛИИИЗ!!!!! Пусть задано некоторое слово, состоящее из букв английского алфавита длинной не более 80 символов (например, “WORD”). Рассмотрим набор возможных перестановок, состоящих из букв данного слова (например, “RDOW”, “WODR” и т.д.). Требуется выбрать из этого множества слово, следующее по алфавиту за исходным. Входные данные В единственной строке входного файла...
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. Просмотров 1555. Ответов 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