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

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

Восстановить пароль Регистрация
 
Lenchick
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 4
04.03.2011, 22:36     Связные списки и множества элементов #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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 22:36     Связные списки и множества элементов
Посмотрите здесь:

Связные списки C++
C++ Связные списки
C++ Связные списки
Связные списки C++
C++ Связные списки.
Связные списки C++
C++ Связные списки
C++ однонаправленные связные списки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 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;
}
Yandex
Объявления
05.03.2011, 03:31     Связные списки и множества элементов
Ответ Создать тему
Опции темы

Текущее время: 02:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru