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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Свой контейнерный класс http://www.cyberforum.ru/cpp-beginners/thread386348.html
Господа, помогите пожалуйста написать прогу. сама вообще не справляюсь: шаблоны и контейнеры понимаю с пятого на десятое. задание: Создать контейнерный класс на основе класса вектор или лист с обработкой исключений #include <exception>. прога должна выводить на экран 10 символов.
C++ Ходы шахматного коня Задача заключается в том, чтобы найти минимальное количество ходов для перехода шахматного коня с клетки T1 на клетку T2. Если у кого-то есть идеи, буду благодарен:) http://www.cyberforum.ru/cpp-beginners/thread386347.html
C++ Повтор программы после ввода символа
На форуме уже данная тема была, но не один из примеров приведенных в ней не работает... Как реализовать повтор программы, с помощью char ch; do {std::cout << "continue? (y/n): "; std::cin.ignore(1024, '\n'); std::cin >> ch; } while ( ch == 'y' || ch == 'Y' ); return 0; чтобы она не захватывала предыдущее значение, которое было уже введено?...
C++ Корабли
Здравствуйте! Ребят, не могли бы вы решить одну задачку на динамику? именно она не получается была бы вам очень благодарна! заранее большое спасибо вам! вот задачка: Дано прямоугольное поле NxM, в клетках которого записаны символы '.' (точка) и '*' (звездочка). За один ход разрешается выбрать один из краев поля (верхний, нижний, левый или правый) шириной (высотой) в 1 клетку и удалить его. ...
C++ Класс с использованием list http://www.cyberforum.ru/cpp-beginners/thread386338.html
Не получается разобраться с программой (ошибки при компиляции). #include <iostream> #include <list> using namespace std; typedef enum {LOW, NORMAL, HIGH} ElementPriority; typedef struct { string elem;
C++ Альфа-прозрачность формы Впрочем, здесь пойдет речь не совсем о альфа-прозрачности формы.. Как можно на C++ осуществить такую вещь: Тоесть альфа-прозрачность верхней части окна, то место между заголовком и началом формы, я незнаю как назвать это, надеюсь меня поймут. Заранее спасибо.;) подробнее

Показать сообщение отдельно
C++dummy
Сообщений: n/a
18.11.2011, 15:46     Работа со списками (через класс). Скажите, в чем ошибка.
Доброго времени суток. Я написал программу, просмотрите, пожалуйста.

В общем нужно реализовать класс, выполняющий следующие функции:
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 минуты
Нет, ну ребят, ну подскажите. Здесь же для вас ничего сложного.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru