Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 01:44   #1
Kronoz
 
Регистрация: 21.12.2010
Сообщений: 5
Радость Списки С++ есть (набросок программы)

Здраствуйте форумчане, помогите пож, необходимо проверить есть ли в списке с одинаковым значением.

програма что наведена ниже высчитывает длину списка.


[CPP]#include <iostream>
#include <time.h>
#include <conio.h>
#include <math.h>
#include <tchar.h>
using namespace std;
struct SList{
int data;
SList* next;
};

class List{
void clear (SList* p);
int count;
SList* pHead;
bool element;
public:
List();
~List();
void set(int a);
void show ();
int get_count();
void deleteElement (int, SList*);
};
List::List(){
pHead = NULL;
count = 0;
element = false;
}
List::~List(){
if (pHead != NULL)
clear(pHead);
}

void List::clear(SList *p){
if (p->next != NULL)
clear (p->next);
delete p;
}

void List::set(int a){

SList* temp = pHead;

if (a >= 0){

if (pHead != NULL){

while (temp->next != NULL && temp->next->data < a){
if (temp->data < a){
temp = temp->next;
}
}

if (pHead == temp && pHead->data > a){
SList* l = new SList;
l->data = temp->data;
l->next = temp->next;
temp->data = a;
temp->next = l;
}
else{
if (temp->next != NULL && temp->next->data > a){
SList* tl = temp->next;
temp->next = new SList;
temp->next->data = a;
temp->next->next = tl;
}
else{
temp->next = new SList;
temp->next->data = a;
temp->next->next = NULL;
}
}

}
else{
pHead = new SList;
pHead->data = a;
pHead->next = NULL;
}
cout << "set " << a << endl;
count++;
}
else{
deleteElement(abs(a), temp);
if (!element)
cout << "element " << abs(a) << " does not exist" << endl;
}
}

void List:eleteElement(int a, SList* p){
if (p->next->next != NULL)
deleteElement(a, p->next);

if (p->next->data == a){
if (p->next->next == NULL)
p->next = NULL;
else{
p->next = p->next->next;
}
element = true;
cout << "delete " << a << endl;
count--;
}
if (p == pHead && p->data == a){
pHead = p->next;
element = true;
count--;
}
}

void List::show(){
SList* pCurr;
pCurr = pHead;
while (pCurr != NULL){
cout << pCurr->data << " ";
pCurr = pCurr->next;
}
}

int List::get_count(){
return count;
}

int _tmain(int argc, _TCHAR* argv[])
{
List l;
char* token;
const int max_line = 1024;
char line[max_line];

cout << "Entrance sequence: ";
cin.get(line, max_line);

token = strtok(line, " ");
while (token != NULL){
int num = atoi(token);
l.set(num);
token = strtok(NULL, " ");
}

cout << endl;
cout << "show: "<< endl;
l.show();

cout << endl;
cout << "Length of list: "<< endl;
cout << l.get_count() << endl;
getch();
return 0;
}
[/CPP]

слышал что можно для поиска одинаковых значени метод BinarySearch (T)
Kronoz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли скрипт партнёрской программы которая morekaifa Софт 0 02.04.2011 17:10
Есть проблемка с отладкой программы warder Общие вопросы C/C++ 9 25.05.2010 23:02
есть такие программы ? Iluhin Безопасность, Шифрование 14 01.04.2010 22:28
Код есть программы нет! Serco Помощь студентам 4 10.03.2010 21:27
Есть код программы на с++. Нужно обьяснение Alex1991 Помощь студентам 1 16.03.2009 14:37