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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
lotoart
#1

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

18.03.2009, 22:00. Просмотров 1558. Ответов 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();
}

Помогите пожалуйста))
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2009, 22:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамические структуры данных - списки (C++):

Динамические структуры данных. Списки - C++
Ребят, срочно нужна помощь, помогите пожалуйста, кто чем может! Задание: В деке задать слово. Определить, является ли оно...

Динамические структуры данных. Односвязные списки - C++
Вот код. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; const int k = 101;...

Динамические структуры: линейные списки - C++
Люди помогите:wall: Дали задачу из учебника Павловской Вот вроде смотрю как в учебнике написано про линейные списки все понятно. Как...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Динамические структуры (линейные списки): Run-Time Check Failure #2 - Stack around the variable ... was corrupted. - C++
Снова необходима ваша срочная помощь. Программа по димнамическим структурам на С++. Выполняет все необходимые действия, но при программном...

Динамические структуры данных - C++
Здравствуйте. Есть такой код в таких файлах: Основной .cpp-файл программы#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2009, 22:00
Привет! Вот еще темы с ответами:

Динамические структуры данных - C++
Выполнить задания 3 способами: с использованием стека, очереди, дека. Описание соответствующих типов и набор всех необходимых для их...

Динамические структуры данных - C++
(можно с пояснением,что-то не понимаю) Есть строка символов, признаком конца которой является ;. В строке могут быть фигурные, круглые,...

Указатели, работа с динамическими структурами данных и динамические списки, стеки - C++
1)Указатели, работа с динамическими структурами данных. Динамическое управление памятью Динамические массивы. Массив должен быть...

Динамические структуры данных. Дек - C++
Ребята помогите, горит степуха! Динамически разработать и реализовать на языке С следующие функции работой с Деком: 1. Создание...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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