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

АТД список. Односвязный список с двумя параметрами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исключения, возврат кодов ошибок, assert и 1 вопрос про исключение. http://www.cyberforum.ru/cpp-beginners/thread379568.html
Как правильно выбирать в какой ситуации применять то, а в какой другое? Есть, конечно, очевидные ситуации, например, не открывается файл, тогда это исключение. Но много не очевидных ситуаций. Как...
C++ Макроподстановки Добрый вечер. Помогите разобраться с заданием либо решить на "чистом Си". Нужно написать макрос, который будет обеспечивать последовательное введение (из стандартного файлового потока) и добавление... http://www.cyberforum.ru/cpp-beginners/thread379550.html
C++ Rand число в char
Доброго времени суток. Ребята, очень нужна ваша подсказка... мне надо записать в файл рандомные числа (с диапазоном) через rand(). я использую FILE *stream для файлов. поэтому, мне число надо...
C++ Бинарные деревья ! кому интересно , сюда!;)
задание : Описать процедуру или функцию которая : а) печатает запись, встречающуюся в дереве один раз б) печатает запись, встречающуюся в дереве максимальное число раз я уже не наю че...
C++ Считывание из файла http://www.cyberforum.ru/cpp-beginners/thread379534.html
#include "stdafx.h" #include <iostream> #include <conio.h> #include <fstream> #include <vector> using namespace std; void main() { setlocale(LC_ALL,"RUS"); vector <double> A;
C++ Помогите с парой вопросов по С++ Всё связано с консольными приложениями 1) После получения результата программа пишет "нажмите любую клавишу". После нажатия она закрывается. Как сделать, чтобы программа повторялась с самого... подробнее

Показать сообщение отдельно
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255

АТД список. Односвязный список с двумя параметрами - C++

08.11.2011, 02:43. Просмотров 723. Ответов 0
Метки (Все метки)

Здравствуйте.

Нужна помощь!

Нужно реализовать класс для работы с односвязным линейным списком с двумя параметрами, не используя стандартную библиотеку!

Класс должен уметь выполнять следующие действие:

Добавление элемента в начало списка

void push_front ( int id, char* name);

идентификатор ( id ) - целое число;
наименование ( name ) - строка (не более 255 символов).

Не пойму как может ячейка в списка принимать 2 значение???
насколько я знаю ячейка в списке содержит элемент и указатель на следующий элемент списка!

с одним параметром я реализовал, тут проблем вообще то не может быть!

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
//SList.h
 
#include "iostream"
#include "string"
 
using namespace std;
 
struct element
{
     std::string a;
     element *next;
};
 
class SList
{
public:
    
    SList(void);
    void push_front(std::string c);
    void print();
    ~SList(void);
private:
        element *head;
        int count;
};
 
 
SList::SList(void)//конструктор
{
    head = NULL;
    count = 0;
}
 
SList::~SList(void)//деструктор
{
     element *h;
    if (head)
    {
        do
        {
            h = head;
            head = h->next;
            delete h;
        }
        while (head);
    }
}
 
 
void SList::push_front(string c)
{
     if (head == NULL)
     {
        head = new element;
        head->a = c;
        head->next = NULL;
        count = 1;
     }
     else
     {
        element *h;
        h = new element;
        h->a = c;
        h->next = head;
        head = h;
        count++;
     }
}
 
void SList::print()
{
     if (head == NULL)
     {
         cout << "Список пуст\n";
     }
     else
     {
        element *h, *t;
        h = head;
        do
        {
            cout << h->a << "\n";
            t = h->next;
            h = t;
        }
        while(h);
        cout<<"\n";
     }
}
SList.cpp
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
#include "iostream"
#include "string"
#include "SList.h"
 
using namespace std;
 
int main()
{
    setlocale(0, "");
 
    string elem; 
    
    SList lst;
    
    cout << "Введите єлементы в список: \n";
    for(int i = 0; i < 4; i++)
    {
        getline(cin, elem);
        lst.push_front(elem);
    }
    cout << "Наш список:\n";
    
    lst.print();
    
    system("pause >> null");
    return 0;
}
Подскажите каким способом можно передать в функцию добавления элементов списка два параметра??

Например:

lst.push_front( 5, "name_50");
lst.push_front( 3, "name_60");
lst.push_front( 2, "name_70");

На выходе хочу получить что то типа этого!

5 name_50
3 name_60
2 name_70

Ума не приложу как передать два параметра!

И вообще это реально сделать с помощью списков??
Спасибо!

Добавлено через 1 час 38 минут
Все спасибо, сам разобрался!)

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
#include "iostream"
#include "string"
 
 
 
using namespace std;
 
struct element
{
     std::string a;
     int num;
     element *next;
};
 
class SList
{
public:
    
    SList(void);
    void push_front(int id, std::string c);
    void print();
    ~SList(void);
private:
        element *head;
        int count;
};
 
SList::SList(void)//конструктор
{
    head = NULL;
    count = 0;
}
 
SList::~SList(void)//деструктор
{
     element *h;
    if (head)
    {
        do
        {
            h = head;
            head = h->next;
            delete h;
        }
        while (head);
    }
}
 
 
void SList::push_front(int id, string c)
{
     if (head == NULL)
     {
        head = new element;
        head->a = c;
        head->num = id;
        head->next = NULL;
        count = 1;
     }
     else
     {
        element *h;
        h = new element;
        h->a = c;
        h->num = id;
        h->next = head;
        head = h;
        count++;
     }
}
 
void SList::print()
{
     if (head == NULL)
     {
         cout << "Список пуст\n";
     }
     else
     {
        element *h, *t;
        h = head;
        do
        {
            cout << h->num << " "<< h->a << "\n";
            t = h->next;
            h = t;
        }
        while(h);
        cout<<"\n";
     }
}
срр - файл
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
#include "iostream"
#include "string"
#include "SList.h"
 
using namespace std;
 
int main()
{
    setlocale(0, "");
 
    string elem; 
    
    SList lst;
    
    cout << "Введите єлементы в список: \n";
    for(int i = 0; i < 4; i++)
    {
        getline(cin, elem);
        lst.push_front(i, elem);
    }
    cout << "Наш список:\n";
    
    lst.print();
    
    system("pause >> null");
    return 0;
}
Спасибо, что может кто то постарался!)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru