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

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

Войти
Регистрация
Восстановить пароль
 
Lenchick
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 4
#1

Связные списки и множества элементов - C++

04.03.2011, 22:36. Просмотров 658. Ответов 1
Метки нет (Все метки)

Здравствуйте!Помогите пожалуйста переделать программу с помощью упорядоченых связных списков:
1)Написать программу которая:
-проверяет принадлежание элемента множеству;
-проверка пустоты множества;
-добавление и удаление элемента;
-чтение и выведение эементов;
Написать модуль,который реализует понятие множества целых.Для подачи множества использовать упорядоченый связный список.
2)Написать программу чтения 2 множеств и выведения резулитата их разници.

Как просто написать программу я знаю,а с понятием связных списков никогда не встречалась и я просто не понимаю,как это грамотно переделать.Я конечно почитала в интернете что это такое,но у меня не так много опыта,что бы взять вот так вот сразу и решить это задание.Прошу,помогите пожалуйста.
Вот обычный программный код для некоторых операций с множествами(подозреваю,нахамутала малость-компилятор злиться):


#include "stdafx.h"
#include <iostream>
using namespace std;

const int MaxSize = 100;

class Set {
int len;
int members[MaxSize];
int Set::find (int a);
public:
Set() {len = 0;}
int getLenght() {return len;}
void showset();
bool isMember (int a);
Set operator + (int a);
Set operator - (int a);
Set operator + (Set ob2);
Set operator - (Set ob2);
};
int Set::find(int a) {
int i;
for(i=0; i<len; i++)
if(members[i] == a) return i;
return -1;
}


void Set::showset() {
cout<<"{";
for(int i=0; i<len; i++)
cout<<members[i] <<" ";
cout <<"}\n";
}


bool Set::isMember(int a) {
if(find(a) !=-1) return true;
return false;
}

Set Set::operator + (int a){
Set newset;
if(len==MaxSize){
cout<<"Mnojestvo polno.\n";
return *this;
}
newset = *this;
if(find(a)==-1) {
newset.members[newset.len] = a;
newset.len++;
}
return newset;
}
Set Set::operator - (int a){
Set newset;
int i = find(a);
for(int j=0; j<len; j++)
if(j!=i) newset = newset+members[j];
return newset;
}




Set Set::operator +(Set ob2){
Set newset = *this;
for(int i=0; i<ob2.len; i++)
newset = newset + ob2.members[i];
return newset;
}
Set Set::operator - (Set ob2){
Set newset =*this;
for (int i=0; i<ob2.len; i++)
newset = newset - ob2.members[i];
return newset;
}

//демонстрация класса Set
int main () {
Set s1;
Set s2;
Set s3;
s1= s1+1;
s1=s1 +2;
s1=s1+3;
cout <<"s1 posle dobavlenija elementov:";
s1.showset();
cout<<"\n";
cout<<"Proverjaem na chlenstvo,ispolsyja isMember().\n";
if(s1.isMember(2))
cout<<"2 ne est chlenom s1.\n";
if(s1.isMember(4))
cout<<"4 est chlenom s1.\n";
else
cout<<"4 ne est chlenom s1.\n";
cout<<"\n";
s1=s1 - 2;
cout<<"s1 posle s1=s1-2:";
s1.showset();
s1=s1 - 1;
cout<<"s1 posle s1=s1-1:";
s1.showset();
s1=s1-3;
cout<<"s1 posle s1=s1-3:";
s1.showset();
cout<<"\n";

s1=s1+1;
s1=s1+2;
s1=s1+3;
cout<<"s1 posle dobavlenija 1 2 3:";
s1.showset();
cout<<"\n";

s2=s2+1;
s2=s2+4;
s2=s2+5;
cout<<"s1 posle dobavlenija 1 4 5:";
s2.showset();
cout<<"\n";
s3=s1+s2;
cout<<"s3 posle s3-s1:";
s3.showset();
cout<<"\n";
cout<<"s2 posle s2=s2-s2:";
s2=s2-s2;
s2.showset();
cout<<"\n";
s2=s2+3;
s2=s2+2;
s2=s2+1;
cout<<"s2 posle dobavlenija 1 2 3:";
s2.showset();
system("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Связные списки и множества элементов (C++):

Связные списки - C++
Написать функцию, удаляющую из исходной строки заданный символ. Например, удаление символа ‘i’ из строки “cabin heating” дает в результате...

связные списки - C++
12. Використовувати (лінійні) односпрямовані списки без заголовної ланки (мал. а) або з заголовною ланкою (мал. б) при наступному їхньому...

Связные списки - C++
Помогите пожалуйста осуществить в программе вот такие вот действия: 1) добавление элементов в начало связного списка; 2)добавление...

Связные списки - C++
Доброго времени суток. И у меня такая проблема - не могу разобраться со связными списками. Не могли бы вы помочь мне с этим, допустим,...

Связные списки - C++
12. Использовать (линейные) однонаправленные списки без заглавной звена (рис. А) или с заглавной звеном (рис. Б) при последующем их...

Связные списки - C++
Вот есть код все работает отлично но препод сказал что-бы при вводе элементов в список элементы сортировались вот к примеру 20 5 8 12 1 10...

1
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.03.2011, 03:31 #2
Цитата Сообщение от Lenchick
а с понятием связных списков никогда не встречалась и я просто не понимаю,как это грамотно переделать.
здесь только внешний вид функций можно взять
тебе надо сделать односвязный список, отсортировать его - это будет упорядоченный односвязный список (это всё уже много раз писалось от и до)

переделываешь некоторые функции
было
C++
1
2
3
4
5
6
7
8
9
int Set::find(int a)
{
    int i;
 
    for (i = 0; i < len; i++)
        if (members[i] == a)
            return i;
    return -1;
}
стало
C++
1
2
3
4
5
6
7
8
9
10
11
int Set::find(int a)
{
    int i = 0;
 
    for ( ; ptr; ptr = ptr->next) {
        i++;
        if (ptr->n == a)
            return i;
    }
    return -1;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2011, 03:31
Привет! Вот еще темы с ответами:

Связные списки. - C++
Всем привет ребят можете привести пример двусвязносго списка.

Связные списки - C++
Друзья, помогите исправить код!!! Программа описывет таблицу о книгах.(Название, автор, стоимость). Почему он поддчеркивает head, next,...

Связные списки - C++
Я практически полный нуб в С++. Вот такая задача: В столовой предлагаются N комплексных обедов, состоящих из Q блюд. Известна стоимость и...

Стэк и связные списки - C++
Товарищи, помогите задание на зачёт: нужно запрограммировать связный список, в котором объект добавляется в конец, а удаляется с начала...


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

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

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