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

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

Войти
Регистрация
Восстановить пароль
 
C++dummy
#1

Работа со списками (через класс). Скажите, в чем ошибка. - C++

18.11.2011, 15:46. Просмотров 412. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Я написал программу, просмотрите, пожалуйста.

В общем нужно реализовать класс, выполняющий следующие функции:
1. Добавление элемента в начало списка
2. Добавление элемента в конец списка
3. Включение элемента в середину списка, после элемента с определенным
идентификатором
4. Удаление элемента по его идентификатору
5. Замена двух соседних элементов списка.
6. Вывод списка на экран.

Вроде алгоритмы, по логике, верные, но в итоге получается какой-то бред. И еще без первой строки в коде не работает strcpy в MyList1::insert. Я знаю, что есть более простые пути, но нужно создать класс без использования существующих библиотек.

Заранее благодарю за помощь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#define _CRT_SECURE_NO_WARNINGS
 
#include "stdafx.h"
#include "iostream"
using namespace std;
 
struct Elem{
    int id;
    char *inf2;
    int count;
    int search;
    Elem *next;
};
class MyList1{
public:
    bool printList(Elem* first);
    void addFirst(Elem* &first, int id, char *inf2);
    void addLast(Elem* &last, int id, char *inf2);
    bool insert(Elem* first, int search, int count, char* name);
    bool del(Elem* first, int search);
    bool swap (Elem* &first, int search);
};
bool MyList1::printList(Elem* first){
    Elem* cur=first;
    if (first==NULL) return false;
    else
    while (cur!=NULL){
        cout << cur->id << "\t" << cur->inf2 << "\n";
        cur=cur->next;
    }
    return true;
}
void MyList1::addFirst(Elem* &first, int id, char *inf2){
    if (first==NULL){
        first=new Elem;
        first->next=NULL;
        first->id=id; 
        first->inf2=inf2;
        return;}
    Elem* n=new Elem;
    n->next=first;
    first=n;
    first->id=id;
    first->inf2=inf2;
    return;
}
void MyList1::addLast(Elem* &last, int id, char *inf2){
    if (last==NULL){
        last=new Elem;
        last->next=NULL;
        last->id=id; 
        last->inf2=inf2;
        return;
    }
    Elem* n=new Elem;
    last->next=n;
    last=n;
    last->id=id;
    last->inf2=inf2;
    last->next=NULL;
    return;
}
bool MyList1::insert (Elem* first, int search, int count, char* inf2){
    if(first==NULL)
        return false;
    Elem* cur=first;
    while ((cur->next!=NULL)&&(cur->count!=search)){
        cur=cur->next;
    }
    Elem* n=new Elem;
    n->count=count;
    n->inf2=new char[strlen(inf2)+1];
    strcpy(n->inf2, inf2);
    if (cur->count==search){
        n->next=cur->next;
        cur->next=n;
        return true;
    }
    return false;
}
bool MyList1::del(Elem* first, int search){
    if (first=NULL)
        return false;
    if(first->count==search){
        Elem* cur=first;
        first=first->next;
        delete[] cur->inf2;
        delete[]cur;
        return true;
    }
    Elem* cur=first;
    while ((cur->next!=NULL)&&(cur->next->count!=search)){
        cur=cur->next;
    }
    if ((cur->next!=NULL)&&(cur->next->count==search)){
        Elem* q=cur->next;
        cur->next=q->next;
        delete[] q->inf2;
        delete[] q;
        return true;
    }
    return false;
}
bool MyList1::swap (Elem* &first, int search){
    if(first==NULL) return false;
    Elem* last=NULL;
    while (last->next!=NULL){
        last=last->next;
    }
    if(first->count==search){
        if(first->next==NULL) return false;
        Elem* a=first;
        Elem* b=first->next;
        a->next=b->next;
        last->next=b;
        b->next=a;
        first=b;
        return true;
    }
    Elem* cur=first;
    while ((cur->next!=NULL)&&(cur->next->count!=search)){
        cur=cur->next;
    }
    if ((cur->next!=NULL)&&(cur->next->count==search)){
        Elem* a=cur->next;
        Elem* b=a->next;
        a->next=b->next;
        cur->next=b;
        b->next=a;
        return true;
    }
    return false;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    Elem *first;
    first=NULL;
    MyList1 myList1;
    myList1.addLast(first, 5, "name_50");
    myList1.addFirst(first, 3, "name_30");
    myList1.addLast(first, 7, "name_70");
    myList1.addLast(first, 9, "name_90");
    myList1.insert(first, 5, 6, "name_60");
    myList1.addFirst(first, 1, "name_10");
    myList1.insert(first, 1, 2, "name_20");
    myList1.swap(first,1);
    myList1.printList(first);
    return 0;
}
P.S. У меня складывается ощущение, что косяк кроется где-то в слове first =).

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

Не правильно складываеться в масив. ТОлько не пишите ответ кодом ,а скажите в чем там ошибка - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include&lt;conio.h&gt; ...

Реализовать через тип данных структура. При сборке и отладки возникает ошибка. В чем ошибка? - C++
С++ в таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

Производный класс! Не могу понять в чем ошибка!! - C++
#ifndef LR_H #define LR_H #include &lt;stdexcept&gt; template &lt;class T&gt; class LR: public Rat { // Ошибка expected class-name...

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

Работа с линейными списками. Ошибка "getline: идентификатор не найден" - C++
Вообще не разбираюсь в этом)),но все же курсовую надо сдавать.Тема курсовой: Текст помощи для программы организован как линейный...

Скажите а на чем написан антивирус касперского - C++
скажите а на чем написан антивирус касперского!!!!!!!!!!!

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

Скажите в чем разница?? (Ассемблеровские вставки C++) - C++
здравствуйте! написал программу на C++ с помощью ассемблеровских вставок: &quot;Подсчитать, сколько раз в данной строке встречается буква...

Работа с файлом через класс - C++
Доброй ночи всем! Хочу реализовать открытие файла для чтения из конструктора класса CTextFile: #ifndef ___TEXT_FILE___ #define...

Скажите пожалуста чем отличается массив целого числа от массива строк? - C++
чем отличается массив целого числа от МАССИВа строк?

Работа с файлами, не могу понять в чем ошибка - C++
Программа должна копировать из f1 в f2 строки где есть повторение слов... Написал вот, строка которая выдает ошибку выделена...


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

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

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